c++ - Visual C++ 链接器无法解析 FFmpeg 的外部符号

标签 c++ ffmpeg

我正在制作一个 C++ 程序,我想使用为 x64 预构建的 FFmpeg,这是一个 C 编译的库。 我正在使用此代码以包含其 header :

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 的库放在默认库路径中,但都没有成功。

提前致谢!

最佳答案

很难从引用的链接器错误中理解的典型问题是引用错误的问题 .lib文件,特别是 Win32 x64 中的平台库构建,反之亦然。名称可能是正确的,但集合是错误的,然后链接器采用 #pragma引用但忽略内容。

您应该确保您的构建平台与引用的库文件的位数匹配。 This answer有一个构建良好的简约项目,您可以将代码/引用与您使用的内容进行比较,它还在最底部提到位数问题以及对答案的评论。

关于c++ - Visual C++ 链接器无法解析 FFmpeg 的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35637894/

相关文章:

c++ - DLIB C++ 对象检测示例训练真的很慢

c++ - 一次又一次尝试在给出错误路径的同时打开文件

c++ - 如何将彩色图像转换为密度单色图像?

c++ - std::remove 函数中的转换错误

bash - 下载直播流时,如何使 youtube-dl 或 streamlink 在一段时间后停止

c++ - BigInt 运算符+函数?

python - python中子进程命令行中没有反斜杠的引号

FFMPEG RTSP 流式传输

video - 支持 RGB48 的无损视频编解码器

ffmpeg - 无法使用 IDM 和 ffmpeg 下载可流式传输的 m3u8 链接