今天想将用ssl做的加密工具重新编译一下,把支持加密的数据长度增大一些,没想原来工作正常的VS2010工程在家里的VS2015中build时却提示一连串的类似“Error LNK2001 unresolved external symbol _sscanf ”的错误,都是系统的接口,怎么会无法链接呢?后来找到一篇文章,原来vs2015采用内联方式来调用stdio.h里面的一些接口,所以如果其他外部接口也调用了stdio.h里面的函数,就会出现无法链接的错误。为此VS2015提供了另外一个可以供外部链接的版本- legacy_stdio_definitions.lib,将这个库添加到linker-input里面,便可以消除上面的错误。
另外附一个链接ssl库的错误:
error LNK2019: unresolved external symbol ___iob_func
网友有说重新编译openssl库,编译前修改e_os.h,将_MSC_VER <= 1800改为_MSC_VER <= 1900,因为vs2015的版本是1900,原文地址(http://openssl.6102.n7.nabble.com/Compiling-OpenSSl-Project-with-Visual-Studio-2015-td59416.html)
后来我自己下载openssl-1.0.2e版本,发现不用再修改上面的配置也是可以的,openssl内部已经加上了对vs2013以上版本的支持