VisualStudioでmingwでコンパイルされたライブラリを使用しようとしています。ただし、次のリンカーエラーが発生します。
エラーLNK2001:未解決の外部シンボル__imp ___ iob
エラーLNK2019:関数で参照されている未解決の外部シンボル__imp___pctype
エラーLNK2019:関数で参照されている未解決の外部シンボル__imp____mb_cur_max
エラーLNK2001:未解決の外部シンボル_fprintf
この投稿のようにlegacy_stdio_definitions.libに対してリンクすることで、_fprintfエラーを修正できました: 未解決の外部シンボル__imp__fprintfおよび__imp ____ iob_func、SDL2 。
しかし、他の3つの未解決の外観を修正する方法がわかりません。どうすればこれを修正できますか?ライブラリは、Visual Studio2013で完全に機能します。
編集:
さて、ここにアップデートがあります。 libmsvcrt.aをmingwlibフォルダーからVisualStudioに移動し、それをリンカー設定に追加しました。今では正しく動作しているようです。
ライブラリは、古いバージョンのCRTに対してコンパイルされました。取得する未解決のシンボルは、コンパイルされたライブラリに存在するCRTの内部シンボルです。 VS2015 CRT(ユニバーサルCRT)に対してライブラリを再コンパイルする必要があります。しかし、MinGWがこれをサポートしているかどうかはわかりません。
それができない場合は、VS2013コンパイラを引き続き使用する必要があります。 (プロジェクトオプションでツールセットをvs2013に設定することにより、VS2015 IDEを使用できます。ただし、2013コンパイラがサポートするC++機能に制限されます。)
同じ問題(DLLのCRTではなく静的CRTでコンパイルされたライブラリ)が発生し、プロジェクトのプロパティで次の2つのパラメーターを変更することで問題を解決できました。
それだけでは不十分な場合は、次のページに詳細があります: https://social.msdn.Microsoft.com/Forums/en-US/841e5723-bce4-4340-b7b3-027dcdf90f00/