升级到VS2015提示LNK2001错误

今天想将用ssl做的加密工具重新编译一下,把支持加密的数据长度增大一些,没想原来工作正常的VS2010工程在家里的VS2015中build时却提示一连串的类似“Error LNK2001 unresolved external symbol _sscanf ”的错误,都是系统的接口,怎么会无法链接呢?后来找到一篇文章,原来vs2015采用内联方式来调用stdio.h里面的一些接口,所以如果其他外部接口也调用了stdio.h里面的函数,就会出现无法链接的错误。为此VS2015提供了另外一个可以供外部链接的版本- legacy_stdio_definitions.lib,将这个库添加到linker-input里面,便可以消除上面的错误。

原文地址(http://stackoverflow.com/questions/32418766/c-unresolved-external-symbol-sprintf-and-sscanf-in-visual-studio-2015)

另外附一个链接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以上版本的支持

发表评论

电子邮件地址不会被公开。 必填项已用*标注