我正在尝试围绕 libavformat 构建一些视频阅读代码。获得编译后的 DLL 和 .lib
文件后 here ,我去构建我的代码,即使我已经链接到提供的 .lib
文件,链接器也找不到任何 libavformat 符号。
使用 dumpbin -headers
检查 libavformat.lib
显示它导出带有下划线前缀的所需函数。例如,当我想调用 avformat_open_input
时,.lib 文件给出了 _avformat_open_input
。
这是为什么,为什么我不能链接预编译的 dll?
最佳答案
您需要执行以下所有任务才能将 libav
与 MSVC++
一起使用。首先转到 Zeranoe
- 下载
Shared
版本,从.dll
文件夹中复制所有bin
文件,并将它们粘贴到将生成exe
的输出目录中。 - 下载
Developer
版本,从.lib
文件夹中复制所有lib
文件并将它们粘贴到您的主 c++ 文件所在的位置(例如Folder-1\Folder-2
,其中Folder-1
包含.sln
文件,因此您必须将.lib
4 文件放入 67 - 从您在步骤 2 中下载的
Folder-2
版本复制Developer
文件夹中的所有目录并将它们粘贴到 Folder-2(请参阅步骤 2 中有关 Folder-2 的详细信息) - 下载 inttypes.h 和 stdint.h ,将其保存在此位置
include
文件夹中。 - 要包含头文件,请使用以下语法
你必须使用这个 C:\Program Files\Microsoft Visual Studio 10.0\VC\include\
因为 extern
是一个 libav
库。
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
#include "libavutil/avutil.h"
}
关于c++ - 在 Visual Studio 2010 中链接 libavformat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301864/