我在Windows中有一个FFmpeg 4.0.2的小型c ++项目。但是,我有一个奇怪的问题:我正在x64中进行编译,具有x64库,并且具有正确的链接输入,但是同时在其中获得了LNK2019 error
AND 中的“未使用的库”链接器输出/VERBOSE
:
1>Unused libraries:
1> I:\lib\ffmpeg-4.0.2-win64\lib\\avcodec.lib
1> I:\lib\ffmpeg-4.0.2-win64\lib\\avutil.lib
我手动检查了lib文件是x64。 I:\lib\ffmpeg-4.0.2-win64\lib\
在LIBPATH中。
与ICC症状相同。
这怎么可能发生?
答案 0 :(得分:1)
要将ffmpeg的标头包含在C ++程序中,您必须考虑到ffmpeg使用C调用约定。否则,您的链接器将期望在函数名称上使用C ++名称。但是,由于ffmpeg是直接的C语言,因此您必须告诉编译器。
例如,如果您在程序中包含avformat.h
,请按照以下步骤进行操作。
#ifdef __cplusplus
extern "C" {
#endif
#include <avformat.h>
#include <avcodec.h>
#include <avutil.h>
#ifdef __cplusplus
}
#endif
其他ffmpeg标头也是如此。