VS运行程序
来源:互联网 发布:网络平台开发预算 编辑:程序博客网 时间:2024/06/14 04:19
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数组搞出来了
阅读全文
0 0
- VS命令行运行程序
- VS 运行程序问题解决
- VS运行程序一闪而过
- VS运行程序
- VS测试程序运行时间
- vs C++控制台程序后台运行
- 怎么解决VS运行程序控制台一闪而过
- VS下程序运行报0xc000007b
- VS 控制台程序运行一闪而过的解决办法
- VS 2005 编译的程序不能运行的几个解决方法
- VS 2005 编译的程序不能运行的几个解决方法
- VS 2005 编译的程序不能运行的几个解决方法
- 为什么每次运行程序之前,VS都要先编译的解决方法
- VS 2005 编译的程序不能运行的几个解决方法
- VS在安装程序中添加运行库的安装
- vs 给程序添加权限,添加管理员运行权限
- 用VS编译出可独立运行的程序
- vs发布的程序不依赖运行时库msvcp100.dll
- [计蒜之道 复赛2017] 题解 (只有 A,E 两题)
- Referenced file contains errors(project-aware://org/springframework/beans/factory/xml/spring-beans-4
- 动态规划 数字三角形
- hibernate 和java类 往 mysql 传 数据乱码
- 专题二 符号的技巧---- 14.优先级和类型转换分析
- VS运行程序
- 3.字符设备驱动
- android binder机制,注册系统服务--服务端servicemanager binder驱动
- LOG4J配置详解及样例一个
- 关于C++ const 的全面总结
- 修改jenkins的默认端口---tt
- 关于cookie(实训)
- 生成android端BKS类型的证书库
- TensorFlow实战——RNN