VC6.0工程升级到VS2010遇到问题及解决办法 【LNK2019】 无法解析的外部符号 __iob
2015-12-31 08:41
627 查看
VS2010 解决链接错误:error LNK2019: 无法解析的外部符号 __iob
该错误主要是由于静态库在VC6编译而主程序在VC2010编译,大家用的CRT不同。
解决办法,代码中增加
#ifdef __cplusplus
extern "C"
#endif
FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};
此错误的产生根源:
在VC6的stdio.h之中有如下定义:
_CRTIMP extern FILE _iob[];
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
stdin、stdout、stderr是通过查_iob数组得到的。所以,VC6编译的程序、静态库只要用到了printf、scanf之类的函数,都要链接_iob数组。
而在vc2010中,stdio.h中变成了:
_CRTIMP FILE * __cdecl __iob_func(void);
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
_iob数组不再是显式的暴露出来了,需要调用__iob_func()函数获得。所以vc6的静态库链接VC2010的C运行库就会找不到_iob数组.
通过重新定义
FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};
就把vc6需要用到的_iob数组搞出来了
VS2010 解决链接错误:error LNK2019: 无法解析的外部符号 __iob
该错误主要是由于静态库在VC6编译而主程序在VC2010编译,大家用的CRT不同。
解决办法,代码中增加
#ifdef __cplusplus
extern "C"
#endif
FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};
此错误的产生根源:
在VC6的stdio.h之中有如下定义:
_CRTIMP extern FILE _iob[];
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
stdin、stdout、stderr是通过查_iob数组得到的。所以,VC6编译的程序、静态库只要用到了printf、scanf之类的函数,都要链接_iob数组。
而在vc2010中,stdio.h中变成了:
_CRTIMP FILE * __cdecl __iob_func(void);
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
_iob数组不再是显式的暴露出来了,需要调用__iob_func()函数获得。所以vc6的静态库链接VC2010的C运行库就会找不到_iob数组.
通过重新定义
FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};
就把vc6需要用到的_iob数组搞出来了
相关文章推荐
- 简单的暴力搜索
- CRB and His Birthday(2015多校)
- 1126 求递推序列的第N项(51nod)
- Arithmetic Sequence(多校第九场)
- Wheels(bfs遍历,CERC 2014)
- Sum(构造,枚举)
- 1278 相离的圆(51nod)
- 1279 扔盘子(51nod)
- Concert Tour(Uvalive 6853)
- 二维hash(Uva 12886)
- 优先队列实现哈弗曼最小权值
- C#实现自动升级(附源码)
- 背包问题------ 分类: ACM 2015-08-03 20:57 1人阅读 评论(0
- Cent Savings (DP) 分类: ACM dp 2015-08-0
- Judging Troubles (multiset查找) 分类: ACM STL
- Judging Troubles (multiset查找) 分类: ACM STL
- Joke with permutation 分类: ACM 2015-08-03 14:09 1
- HNU Knockout Racing 分类: ACM 2015-08-03 13:35 1人
- Crazy Search(POJ1200) 分类: poj 2015-07-25 10:15 6
- Delicious Apples(多校联合训练) 分类: ACM 多校 201