プロジェクトをVS2008からVS2015に移行しているときに、以下のエラーが発生しています。
21>TFCLd.lib(cryptlib.obj) : warning LNK4217: locally defined symbol _fprintf imported in function _OpenSSLDie
21>TFCLd.lib(rsa_sign.obj) : warning LNK4049: locally defined symbol _fprintf imported
21>TFCLd.lib(cryptlib.obj) : error LNK2019: unresolved external symbol __imp____iob_func referenced in function _OpenSSLDie
21>TFCLd.lib(rsa_sign.obj) : error LNK2001: unresolved external symbol __imp____iob_func
プロジェクトはVS2008でビルドされますが、VS2015で上記のエラーが発生します。私が何が欠けているかを知ってください。
これをクラスヘッダーファイルの先頭またはstdafx.hに配置します
FILE _iob[] = { *stdin, *stdout, *stderr };
extern "C" FILE * __cdecl __iob_func(void) { return _iob; }
見て:
http://openssl.6102.n7.nabble.com/Compiling-OpenSSl-Project-with-Visual-Studio-2015-td59416.html
Opensslルートディレクトリのファイルe_os.hの310行目を変更# if _MSC_VER> =1300
に# if _MSC_VER> =1300 && _MSC_VER <= 1800
問題を修正します。
元のポスターには問題の原因が説明されています。
Visual Studio 2015では、古い名前のライブラリが再設計されました
Visual Studio 2015は、_MSC_VER == 1900と呼ばれます。
Libcurl.libがアプリケーションと同じIDE(MSVC 2015)でコンパイルされていることを確認してください。
VS2015のopenSSLバージョンは古くなっています。 https://www.openssl.org/source/ から最新の安定版をダウンロードしてインストールします
編集:インストール方法: https://www.youtube.com/watch?v=icNn-eJif9k
一般的に、ソリューションエクスプローラーでプロジェクトをクリックし、[Go]-> [プロパティ]-> [C/C++]-> [コード生成]-> [ランタイムライブラリ]をクリックします。ライブラリとバイナリをすべて同じオプションにします。