是的,标准库已经改变了,FTDI似乎并不关心 - 至少不像CDM2.12.18驱动版本。
该问题在this question的答案中有所描述。
void __cdecl Padding(int)
功能从devcon.obj
内ftd2xx.lib
是罪魁祸首。它参考作为宏给出的stdin
,stdout
或stderr
之一。这些宏的内容改变了。
因为我们真的不指望从FTDI库中的任何I/O,我们不妨提供可能的最简单的实现:
FILE* __cdecl _imp____iob_func() { return 0; }
如果你想有一个版本做什么它应该做的:
FILE* __cdecl _imp____iob_func()
{
struct _iobuf_VS2012 { // ...\Microsoft Visual Studio 11.0\VC\include\stdio.h #56
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname; };
// VS2015 has FILE = struct {void* _Placeholder}
static struct _iobuf_VS2012 bufs[3];
static char initialized = 0;
if (!initialized) {
bufs[0]._ptr = stdin->_Placeholder;
bufs[1]._ptr = stdout->_Placeholder;
bufs[2]._ptr = stderr->_Placeholder;
initialized = 1;
}
return (FILE*)&bufs;
}