问题1: errorLINK2005:___iob__func已经在中定义:
其实__iob_func
和__acrt_iob_func
都是用来定义stdin,stdout,stderr,只是不同的VC版本实现方式不同
下面是VS2012的头文件stdio.h
中对stdin,stdout,stderr
定义
下面是VS2015的头文件corecrt_wstdio.h
中对stdin,stdout,stderr
定义
可以看到在VS2015中__iob_func
改成了__acrt_iob_func
问题解决方案:
1.程序中适当位置添加如下内容
#if _MSC_VER>=1900
#include "stdio.h"
_ACRTIMP_ALT FILE* __cdecl __acrt_iob_func(unsigned);
#ifdef __cplusplus
extern "C"
#endif
FILE* __cdecl __iob_func(unsigned i) {
return __acrt_iob_func(i);
}
#endif /* _MSC_VER>=1900 */
2.将/FORCE:MULTIPLE添加到链接器命令行选项
问题2: LINK2019无法解析的外部符号__vsnprintf:
问题解决方案:
1.将legacy_stdio_definitions.lib加入“链接器-》输入-》附件依赖库”中