我尝试在VS2017(C ++)中编译应用程序,我得到错误:
1>libeay32.lib(cryptlib.obj) : error LNK2001: unresolved external symbol ___iob_func
1>libeay32.lib(pem_lib.obj) : error LNK2001: unresolved external symbol ___iob_func
1>libeay32.lib(ui_openssl.obj) : error LNK2001: unresolved external symbol ___iob_func
有关此类错误的其他帖子适用于VS2015,请参阅stdin, stdout
和stderr
。但是这些修复对我没用。
奇怪的是,如果我在代码中转到stdin并且(右键单击)转到定义,它将带我到Visual Studio 11.0包含目录,而不是VS2017。
我的错误在 libeay32.lib 中,我无法在任何地方找到C ++源代码。
还有其他人有这个问题吗?
答案 0 :(得分:0)
我找到了这个解决方案,并将这些行添加到了我的VS 17 C ++项目中
#define stdin (__acrt_iob_func(0))
#define stdout (__acrt_iob_func(1))
#define stderr (__acrt_iob_func(2))
FILE _iob[] = { *stdin, *stdout, *stderr };
extern "C" FILE * __cdecl __iob_func(void) { return _iob; }
This worked for me.