Да, стандартные библиотеки изменились, и FTDI, похоже, не заботится - по крайней мере, не о версии драйвера CDM2.12.18.
Проблема описана в ответах на вопрос this question.
Функция void __cdecl Padding(int)
от devcon.obj
в пределах ftd2xx.lib
является преступником. Он ссылается на один из stdin
, stdout
или stderr
, данный как макросы. Содержимое этих макросов изменилось.
Поскольку мы действительно не ожидаем ввода/вывода из библиотеки FTDI, мы могли бы также обеспечить простую реализацию возможных:
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;
}