错误LNK2001:VS2017中未解析的外部符号___ iob_func

时间:2018-05-18 12:23:33

标签: c++ visual-studio-2017

我尝试在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, stdoutstderr。但是这些修复对我没用。

奇怪的是,如果我在代码中转到stdin并且(右键单击)转到定义,它将带我到Visual Studio 11.0包含目录,而不是VS2017。

我的错误在 libeay32.lib 中,我无法在任何地方找到C ++源代码。

还有其他人有这个问题吗?

1 个答案:

答案 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.