2

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

所以...

最近几天我一直在摆弄opengl之类的东西,试图写一个视频播放器。

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

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

所以我在想我在链接这些库时做错了什么。我目前正在使用:Windows vista (32bit)、基于 Qt 4.7.4 (32bit) 的 Qt creator 2.4.1、Zeranoe 的 FFmpeg build 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 not found 错误 =(.

做这些包括时有什么我忘记的吗?

在此先感谢>.<,(年轻而天真)有抱负的开发者

4

1 回答 1

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。

于 2012-07-05T12:50:19.890 回答