【发布时间】:2016-06-08 20:27:47
【问题描述】:
我正在制作一个 C++ 程序,我想使用为 x64 预构建的 FFmpeg,它是一个 C 编译库。 我正在使用此代码来包含其标题:
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#pragma comment (lib,"G:/Documents/ffmpeg/lib/avcodec.lib")
#pragma comment (lib,"G:/Documents/ffmpeg/lib/avformat.lib")
}
然后我会像调用普通函数一样调用符号,例如使用av_interleaved_write_frame(out->formatContext, &packet);
但是,当我尝试使用 Visual Studio 2015 的内置 C++ 编译器对其进行编译时,出现很多错误,例如
Error LNK2019 unresolved external symbol _av_write_trailer referenced in function "void __cdecl closeArenaVideo(struct VideoOutput *)" (?closeArenaVideo@@YAXPAUVideoOutput@@@Z) Sparta2 c:\Users\Théo\documents\visual studio 2015\Projects\Sparta2\Sparta2\video.obj
对于我所指的任何符号。
我尝试在 Visual Studio 中导入所有内容,使用命令行编译,手动将 FFmpeg 的库放在默认库路径中,但没有成功。
提前谢谢你!
【问题讨论】:
-
检查 this answer 及其底部与 32/64 库混淆相关的更新,您的情况也可能如此。
-
非常感谢,确实是这个问题!如果你愿意,你可以做出正确的回答,我会标记为接受。