我将项目从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中存在以上错误。我可以知道我错过了什么。
答案 0 :(得分:20)
将它放在类头文件的开头或stdafx.h
中FILE _iob[] = { *stdin, *stdout, *stderr };
extern "C" FILE * __cdecl __iob_func(void) { return _iob; }
答案 1 :(得分:5)
看看:
http://openssl.6102.n7.nabble.com/Compiling-OpenSSl-Project-with-Visual-Studio-2015-td59416.html
更改openssl根目录中文件e_os.h的第310行
.absoluteFill {
/*your styles*/
margin:0;
width:calc(100% - 30px);
}
至# if _MSC_VER> =1300
解决了这个问题。
原始海报描述了问题的原因:
在Visual Studio 2015中,重新设计了具有旧名称的库
Visual Studio 2015被称为_MSC_VER == 1900。
答案 2 :(得分:1)
确保您的libcurl.lib是使用与您的应用程序相同的IDE(MSVC 2015)编译的。
答案 3 :(得分:0)
您的openSSL版本已过时VS2015。从https://www.openssl.org/source/
下载并安装最新的稳定版本答案 4 :(得分:0)
通常来说,在解决方案资源管理器中单击项目,然后转到->属性-> C / C ++->代码生成->运行时库。使库和二进制文件都具有相同的选项。