未定义的引用“av_new_packet”(使用Qt)

时间:2015-03-12 12:31:12

标签: c++ c qt libav

我按照README和INSTALL说明中的说明编译了libav。

现在我试图在Qt创建者中关注此example

我已经想出如何在项目文件中包含我需要的库:

LIBS += \
/usr/local/lib/libavformat.a \
/usr/local/lib/libavutil.a

并且还需要将include指令包装在extern中:

extern "C" {
#include <libavformat/avformat.h>
#include <libavutil/dict.h>
}

问题在于,当我尝试编译我的Qt项目时,我只是得到了大约(大约700个)关于&#34;未定义的对av_new_packet&#39;&#34;&#39;&#39;&#39;&#39;&#39;&#39;来自整个图书馆的功能。

我需要做些什么才能让它发挥作用?

更新

我注意到 - 就像我的眼睛因为这么晚才变得模糊 - 错误发生在下载文件夹中的头文件中?这是我运行configure和make命令的文件夹,然后在/ usr / local / lib中生成我链接到的libav * .a库。这是正确的吗?如果不是,我该如何解决?

1 个答案:

答案 0 :(得分:0)

只是答案的一部分,但我最终删除了内置源代码库并下载了Ubuntu 14.04的libav * -dev软件包。

然后我可以链接

上安装的共享对象文件
 /usr/lib/x86_64-linux-gnu/libavformat.so 

 /usr/lib/x86_64-linux-gnu/libavutil.so

这消除了这些问题 - 可能是因为Ubuntu版本与旧版本的版本挂钩。