【问题标题】:runtime error when linking ffmpeg libraries in qt creator在 qt creator 中链接 ffmpeg 库时出现运行时错误
【发布时间】:2012-07-05 17:37:27
【问题描述】:

我在这里很新,但我听说如果你想回答一个问题,stackoverflow 是提问的地方>.

所以...

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

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

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

所以我认为在链接这些库时我做错了什么。 我目前正在使用: Windows Vista(32位), Qt creator 2.4.1 基于 Qt 4.7.4 (32bit), 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 not found 错误 =(.

在做这些包括时我忘记了什么?

提前致谢>.

【问题讨论】:

  • ffmpeg 在可执行路径中吗?尝试将链接的 ffmpeg 库复制到生成可执行文件的路径

标签: windows qt ffmpeg qt-creator


【解决方案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 构建。

【讨论】:

  • 感谢您的回答!有没有机会我可以静态链接库?您提到的 dll 实际上不在我下载的构建(开发构建)中
  • 你是否从源代码编译了ffmpeg?你从哪里下载的?
  • 我从ffmpeg.zeranoe.com/builds(开发版本)下载了它。共享构建确实有这些库,但我希望不必在每次编译时都复制 dll。我不确定这些库是用 vc++ 还是 mingw(或其他)工具链编译的
  • 然后你应该下载静态版本,并使用它们。共享构建是需要 DLL 的构建。
猜你喜欢
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多