在qt creator中链接ffmpeg库时出现运行时错误

时间:2012-07-05 10:17:18

标签: windows qt ffmpeg qt-creator

我在这里很新,但我听说如果你想回答一个问题,stackoverflow就是问它的地方>。<。所以我希望我的问题不是太微不足道,以至于每个人都会对我缺乏研究感到恼火(我已经尝试了两天谷歌搜索D =没有进展!) 我也在Qt论坛上问过这个问题,但我想我也会问这里。

所以...

在过去的几天里,我一直在玩弄opengl之类的东西,试图写一个视频播放器。

但是,当我尝试导入ffmpeg库(avcodec,avformat,avutils等)时,运行时会发生错误(程序编译正常)。编译并在调试模式下运行时,错误消息只给我一个内存地址和错误代码135(找不到DLL)。

当我在我的代码中包含这些库中的函数(例如av_register_all())时会发生此错误,无论函数是否实际被调用,都会发生此错误。

所以我认为在链接这些库时我做错了。 我目前正在使用: Windows Vista(32位), Qt创建者2.4.1基于Qt 4.7.4(32位), Zeranoe的FFmpeg构建git-3233ad4(2012-06-30)

我的.pro文件包含:

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

我尝试了LIBS + =行的许多变化,并多次检查我的文件路径。但是,在所有这些变体中都会发现DLL未找到错误=(。

在做这些包含时,我有什么遗忘吗?

提前致谢>。<, (年轻而天真)有抱负的开发

1 个答案:

答案 0 :(得分:1)

由于错误表明找不到DLL并且当你包含ffmpeg函数时它会发生,这意味着ffmpeg库是动态链接的(即它们是DLL)。这意味着要使你的exe工作,它需要加载ffmpeg DLL。您需要将这些DLL与exe文件放在同一目录中。把它们复制到那里使用dependency walker查看您需要复制哪些DLL,但它们看起来应该像avcodec-52.dll, avdevice-52.dll, avformat-52.dll, avutil-49.dll,可能还有一些,具体取决于您的ffmpeg构建。