1. 程式人生 > >vs2015使用低版本編譯的openssl問題

vs2015使用低版本編譯的openssl問題

plus span 悲劇 fun spl win32 vfp std ssl

用Vs2005編譯的openssl,在vs2015中使用就悲劇了,報如下錯誤

1>libeay32.lib(cryptlib.obj) : error LNK2019: 無法解析的外部符號 __vsnprintf,該符號在函數 _OPENSSL_showfatal 中被引用
1>libeay32.lib(cryptlib.obj) : error LNK2019: 無法解析的外部符號 _vfprintf,該符號在函數 _OPENSSL_showfatal 中被引用
1>libeay32.lib(cryptlib.obj) : error LNK2019: 無法解析的外部符號 ___iob_func,該符號在函數 _OPENSSL_showfatal 中被引用
1>libeay32.lib(pem_lib.obj) : error LNK2001: 無法解析的外部符號 ___iob_func 1>libeay32.lib(rsa_sign.obj) : error LNK2001: 無法解析的外部符號 ___iob_func 1>libeay32.lib(ui_openssl.obj) : error LNK2001: 無法解析的外部符號 ___iob_func

解決方案如下

#ifdef WIN32
#pragma comment(lib,"User32.lib")
#pragma comment(lib,"Advapi32.lib")
#pragma
comment(lib,"Gdi32.lib") #pragma comment(lib,"legacy_stdio_definitions.lib") #pragma comment(lib,"libeay32.lib") #pragma comment(lib,"ssleay32.lib") #endif #if _MSC_VER>=1900 #include "stdio.h" _ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned); #ifdef __cplusplus extern "C" #endif FILE* __cdecl __iob_func(unsigned i) {
return __acrt_iob_func(i); } #endif /* _MSC_VER>=1900 */

vs2015使用低版本編譯的openssl問題