码迷,mamicode.com
首页 > 其他好文 > 详细

vs2015使用低版本编译的openssl问题

时间:2018-12-15 14:31:13      阅读:902      评论:0      收藏:0      [点我收藏+]

标签:snprintf   bsp   nss   fatal   extern   低版本   _MSC_VER   ext   gac   

用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问题

标签:snprintf   bsp   nss   fatal   extern   低版本   _MSC_VER   ext   gac   

原文地址:https://www.cnblogs.com/yuandaozhe/p/10123241.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!