代码之家  ›  专栏  ›  技术社区  ›  Soleil

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

  •  0
  • Soleil  · 技术社区  · 7 年前

    我有一个小的c++项目,在Windows中使用FFmpeg 4.0.2。但是,我有一个奇怪的问题:我在x64中编译,有x64库,并且有正确的链接输入,但是我得到了 LNK2019 error 以及 同时链接器输出中的“未使用的库” /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 回复  |  直到 7 年前
        1
  •  1
  •   hetepeperfan    7 年前

    要将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头也是如此。