2 votes

erreur d'exécution lors de la liaison des bibliothèques ffmpeg dans qt creator

Je suis assez nouveau ici, mais j'ai entendu dire que si vous voulez une réponse à une question, stackoverflow est l'endroit pour la poser >.<. Donc j'espère que ma question n'est pas trop triviale que tout le monde sera agacé par mon manque de recherche (j'ai essayé de googler pendant deux jours déjà D= aucun progrès !). J'ai également posé cette question dans les forums Qt, mais je me suis dit que je demanderais ici aussi.

donc...

Ces derniers jours, je me suis amusé avec opengl et d'autres outils similaires, pour essayer d'écrire un lecteur vidéo.

Cependant, lorsque j'essaie d'importer les bibliothèques ffmpeg (avcodec, avformat, avutils etc.), une erreur se produit à l'exécution (le programme se compile bien). Lorsqu'il est compilé et exécuté en mode débogage, le message d'erreur ne me donne qu'une adresse mémoire et le code d'erreur 135 (DLL non trouvée).

Cette erreur se produit lorsque j'inclus une fonction de ces bibliothèques dans mon code (par exemple av_register_all()) et elle se produit indépendamment du fait que la fonction soit effectivement appelée.

Je pense donc que je fais quelque chose de mal en liant ces bibliothèques. J'utilise actuellement : Windows vista (32bit), Qt creator 2.4.1 basé sur Qt 4.7.4 (32bit), FFmpeg build git-3233ad4 de Zeranoe (2012-06-30)

Mon fichier .pro est composé de :

QT       += core gui opengl

TARGET = test
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp \
    glwidget.cpp

HEADERS += mainwindow.h \
    glwidget.h \

FORMS    += mainwindow.ui

LIBS += -L"$$_PRO_FILE_PWD_/libraries/ffmpeg/libs/" -lavcodec -lavformat -lavutil
INCLUDEPATH += libraries/ffmpeg/includes

J'ai essayé de nombreuses variantes de la ligne LIBS += et j'ai vérifié plusieurs fois mon chemin de fichier. Cependant, l'erreur DLL non trouvée se produit dans toutes ces variations =(.

Y a-t-il quelque chose que j'oublie en faisant ces inclusions ?

Merci d'avance >.<, (jeune et naïf) aspirant au développement

1voto

sashoalm Points 10403

Puisque l'erreur indique qu'une DLL n'a pas été trouvée et que cela se produit lorsque vous incluez des fonctions ffmpeg, cela signifie que les bibliothèques ffmpeg sont liées dynamiquement (c'est-à-dire que ce sont des DLL). Cela signifie que pour que votre exe fonctionne, il doit charger les DLL de ffmpeg. Vous devez avoir ces DLLs dans le même répertoire que votre fichier exe. Copiez-les là. Utilisez marcheur de dépendance pour voir quelles DLLs vous devez copier, mais ils devraient ressembler à quelque chose comme avcodec-52.dll, avdevice-52.dll, avformat-52.dll, avutil-49.dll et peut-être quelques autres, en fonction de votre version de ffmpeg.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X