矛盾的未解决的外部符号+未使用的库以及VS2017和FFMPEG 4

时间:2018-08-03 11:45:05

标签: c++ c visual-studio msbuild

我在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症状相同。

这怎么可能发生?

1 个答案:

答案 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标头也是如此。