可视化C++链接器无法解析 FFmpeg 的外部符号
Visual C++ linker can't resolve FFmpeg's external symbols
我正在制作一个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:UsersThéodocumentsvisual studio 2015ProjectsSparta2Sparta2video.obj
基本上我所指的任何符号。
我尝试在Visual Studio中导入所有内容,使用命令行进行编译,手动将FFmpeg的库放在默认库路径中,但没有成功。
提前谢谢你!
一个很难从引用链接器错误中理解的典型问题是在构建中引用错误的.lib
文件,尤其是x64
Win32
平台库的问题,反之亦然。名称可能正确,但集错误,然后链接器获取#pragma
引用,但忽略内容。
应确保构建平台与引用的库文件的位数匹配。这个答案有简约的项目,它确实构建得很好,你可以将代码/引用与你使用的内容进行比较,它还在最底部提到了位问题和对答案的注释。
相关文章:
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在函数内部的声明中初始化数组,并在外部使用它
- 使外部项目可用于find_package CMake
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- C++:来自外部文件的Trivia
- 从函数角度看ID到文件路径的内部与外部映射
- C++:将外部库链接到dll库
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 节俭并发:未解决的外部问题
- 如何在c++中从git建立外部库
- FFMPEG配置文件级别id大小无效
- 未解析的外部符号_MsiLocateComponentW@12.
- 如何使用对C函数和类对象的外部调用来处理C++头文件
- FFMpeg库:如何在音频文件中精确查找
- 具有外部"c"和程序集的未定义函数
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 可视化C++链接器无法解析 FFmpeg 的外部符号
- Qt Creator with FFmpeg 未解析的外部