我正在尝试构建一些围绕libavformat的视频读取代码。在获得编译后的DLL和.lib文件here之后,我开始构建代码,即使我已经在提供的.lib文件中进行了链接,链接器也找不到任何libavformat符号。
使用dumpbin -headers检查libavformat.lib会发现它导出了带有下划线前缀的所需函数。例如,当我想调用avformat_open_input时,.lib文件给出了_avformat_open_input。
为什么会这样,为什么我不能链接预编译的dll?
发布于 2012-08-23 17:23:31
要在MSVC++中使用libav,您需要执行以下所有任务。第一个转到Zeranoe
generated.
Shared Version,从bin文件夹中复制所有.dll文件并粘贴到exe将为generated.
Developer版本的输出目录中。复制lib文件夹中的所有.lib文件并将其粘贴到主c++文件所在的位置(例如,Folder-1\Folder-2中Folder-1包含.sln文件,因此您必须将.lib文件放在步骤2中下载的Folder-1\Folder-2 Developer版本中复制include文件夹中的所有目录并将其粘贴到文件夹-2(请参阅步骤2中有关文件夹-2的详细信息)
<代码>H124下载<代码>C25和stdint.h,将其保存在此位置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"
}发布于 2012-07-03 06:30:05
获取32位库就可以了:)您的应用程序平台必须与所使用的库匹配(反之亦然)。
发布于 2012-10-30 16:00:11
把它编译成.lib静态库怎么样?
https://stackoverflow.com/questions/11301864
复制相似问题