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



我在Windows中有一个带有FFmpeg 4.0.2的小型c++项目。然而,我有一个奇怪的问题:我在x64中编译,有x64库,并且有正确的链接输入,但我在链接器输出/VERBOSE:中同时得到了LNK2019 errorand

1>Unused libraries:
1>  I:libffmpeg-4.0.2-win64lib\avcodec.lib
1>  I:libffmpeg-4.0.2-win64lib\avutil.lib

我手动检查了lib文件是否为x64。I:libffmpeg-4.0.2-win64lib在LIBPATH中。

与ICC症状相同。

这怎么会发生?

要在C++程序中包含ffmpeg的标头,必须考虑到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标头也是如此。

最新更新