Неразрешенный внешний символ __imp____iob_func, на который ссылается функция _OpenSSLDie

Я получаю ниже ошибки при переносе моего проекта с 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. Могу ли я узнать, чего мне не хватает.

Ответ 1

Поместите это в начало вашего заголовочного файла класса или в stdafx.h

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

Ответ 2

Посмотрите:
http://openssl.6102.n7.nabble.com/Compiling-OpenSSl-Project-with-Visual-Studio-2015-td59416.html

Изменение строки 310 файла e_os.h в корневом каталоге openssl с сайта # if _MSC_VER> =1300
к
# if _MSC_VER> =1300 && _MSC_VER <= 1800
устраняет проблему.

Оригинальный плакат описывает причину проблемы:

В Visual Studio 2015 библиотеки с старыми именами были переработаны

Visual Studio 2015 называется _MSC_VER == 1900.

Ответ 3

Убедитесь, что ваш libcurl.lib был скомпилирован с той же IDE (MSVC 2015), что и ваше приложение.