VS2013的库给VS2017用,兼容性问题

结论:
如果库里面用到C++标准库的东西,那么没法用;
如果没用到C++标准库的东西,那么:

  • 动态库:库和可执行的CRT保持一致即可
  • 静态库:库和可执行的CRT都用MT(d)
    才可以保证能运行,而不是链接报错

update 2021-5-11 09:54:11

VS2013编的C库(静态库,MD, release模式),给VS2019用(MD,release模式),遇到报错:unresolved external symbol __imp___iob_func

解决办法:在 VS2019 的工程最开头部分,添加如下代码,然后重新编译即可:

#if defined(_MSC_VER) && (_MSC_VER >= 1900)

FILE _iob[] = { *stdin, *stdout, *stderr };

extern "C" FILE * __cdecl __iob_func(void)
{
    return _iob;
}
#endif

https://stackoverflow.com/a/32449318/2999096

posted @ 2020-12-06 14:47  ChrisZZ  阅读(827)  评论(0编辑  收藏  举报