web-dev-qa-db-ja.com

関数_OpenSSLDieで参照されている未解決の外部シンボル__imp____iob_func

プロジェクトを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で上記のエラーが発生します。私が何が欠けているかを知ってください。

16
user3665224

これをクラスヘッダーファイルの先頭またはstdafx.hに配置します

FILE _iob[] = { *stdin, *stdout, *stderr }; 
extern "C" FILE * __cdecl __iob_func(void) { return _iob; }
22
Fred

見て:
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と呼ばれます。

5
pitseeker

Libcurl.libがアプリケーションと同じIDE(MSVC 2015)でコンパイルされていることを確認してください。

1
user999713

VS2015のopenSSLバージョンは古くなっています。 https://www.openssl.org/source/ から最新の安定版をダウンロードしてインストールします

編集:インストール方法: https://www.youtube.com/watch?v=icNn-eJif9k

0
Brackets

一般的に、ソリューションエクスプローラーでプロジェクトをクリックし、[Go]-> [プロパティ]-> [C/C++]-> [コード生成]-> [ランタイムライブラリ]をクリックします。ライブラリとバイナリをすべて同じオプションにします。

0
Swiss Frank