1.環境紹介
Visual Studio IDEバージョン: VS2017
QTバージョン: QT5.12.6
問題のある環境: QTプログラムはVisual Studio 2017で開発され、ビデオプレーヤーの開発を実現するためにffmpegライブラリが参照されました。
エラーLNK2019:未解決の外部シンボル
エラーLNK2001:未解決の外部シンボル
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _avformat_alloc_output_context2,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>VideoEncode.obj : error LNK2001: 无法解析的外部符号 _avformat_alloc_output_context2
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _avformat_open_input,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>CDecodeAudio.obj : error LNK2001: 无法解析的外部符号 _avformat_open_input
1>KFileDecoders.obj : error LNK2001: 无法解析的外部符号 _avformat_open_input
1>VideoEncode.obj : error LNK2001: 无法解析的外部符号 _avformat_open_input
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _av_read_frame,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>CDecodeAudio.obj : error LNK2001: 无法解析的外部符号 _av_read_frame
1>KFileDecoders.obj : error LNK2001: 无法解析的外部符号 _av_read_frame
1>VideoEncode.obj : error LNK2001: 无法解析的外部符号 _av_read_frame
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _av_seek_frame,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>KFileDecoders.obj : error LNK2001: 无法解析的外部符号 _av_seek_frame
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _avformat_close_input,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>CDecodeAudio.obj : error LNK2001: 无法解析的外部符号 _avformat_close_input
1>KFileDecoders.obj : error LNK2001: 无法解析的外部符号 _avformat_close_input
1>VideoEncode.obj : error LNK2001: 无法解析的外部符号 _avformat_close_input
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _avformat_write_header,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>VideoEncode.obj : error LNK2001: 无法解析的外部符号 _avformat_write_header
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _av_interleaved_write_frame,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>VideoEncode.obj : error LNK2001: 无法解析的外部符号 _av_interleaved_write_frame
1>CClipVideo.obj : error LNK2019: 无法解析的外部符号 _av_write_trailer,该符号在函数 "protected: int __thiscall CClipVideo::ClipVideo(void)" (?ClipVideo@CClipVideo@@IAEHXZ) 中被引用
1>VideoEncode.obj : error LNK2001: 无法解析的外部符号 _av_write_trailer
次に、問題を解決します
問題がある場合、外部ライブラリの関連関数は通常プロジェクトで引用され、ライブラリのパスがリンクで指定されていないか、関数を定義する.cppファイルがプロジェクトに追加されません。
外部ライブラリが参照され、外部ライブラリの関数が使用され、リンクパスが追加されていないことが原因である場合は、次の図に従って、使用されているライブラリを追加の依存関係に追加します。