我正在尝试围绕libavformat构建一些视频阅读代码。获取已编译的DLL和.lib
文件here后,我将构建我的代码,并且链接器找不到任何libavformat符号,即使我已在提供的{{1}中链接文件。
使用.lib
检查libavformat.lib
表明它使用下划线前缀导出所需的函数。例如,虽然我想调用dumpbin -headers
,但.lib文件会提供avformat_open_input
。
为什么会这样,为什么我不能链接预编译的dll?
答案 0 :(得分:7)
您需要执行以下所有任务才能将libav
与MSVC++
一起使用。首先转到Zeranoe
Shared
版本,复制.dll
文件夹中的所有bin
个文件,并将其粘贴到将生成exe
的输出目录中。Developer
版本,复制.lib
文件夹中的所有lib
文件并将其粘贴到您的主c ++文件中(例如Folder-1\Folder-2
Folder-1
.sln
文件,因此您必须将.lib
个文件放入Folder-2
)Developer
您在步骤2中下载的版本中复制include
文件夹中的所有目录并将其粘贴到Folder-2中(请参阅步骤2中有关Folder-2的详细信息)C:\Program Files\Microsoft Visual Studio 10.0\VC\include\
文件夹中。您必须使用此extern
,因为libav
是C
库。
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
#include "libavutil/avutil.h"
}
答案 1 :(得分:0)
获取32位库,你应该没问题:)你的应用程序平台必须匹配使用的库(反之亦然)。
答案 2 :(得分:0)
如何将其编译为.lib静态库?