摆脱vc8和vc9的依赖库困惑
来源:互联网 发布:plc编程入门教程 编辑:程序博客网 时间:2024/05/16 06:16
大家都知道现在的vs2010马上就要推出了,但是还有很多人喜欢使用vc6进行编程,原因很简单,就是因为用vc6编译的程序,依赖的库msvcrt42。mfc42等在winxp之后的版本都自动集成了,所以,用户使用时像绿色软件一样。但是vc6早已是过时的开发环境了,他的界面效果不好,语法检测不严格。如果我们在用vs2003之后的所有开发环境开发出的程序也像vc6一样,不需要安装任何运行时库就可以绿色使用那该是多么幸福的事呀。下面我就介绍三种不依赖这些库的方法。
在一个纯win32程序里,假如我们只使用标准的API,那么编译出来的程序依然需要运行时的库,原因很简单,因为windows默认的winmain函数是由运行时函数startup调用的,所以在这种情况下必然会用到msvcrt80、90的库。解决的办法是
方法一:
修改项目属性-》c/C++->代码生成->运行时库 (将调试dll或dll修改为相应版本的非dll),这种方法就相当于将动态连接修改为静态链接。当然了这么做会使程序本身体积变大。
方法二:
利用宏#pragma comment(linker,"/entry:startup")
这个宏修改了函数的入口点函数,这样,windows加载进程时就不会先进入crt函数了。
以上两种方法都存在一些局限性。比如方法二中的代码必须不能使用任何crt函数,而面对mfc编写的程序两种方法就都无能为力了,下面介绍一种万能的方法:
方法三:
通过使用WDK或者DDK对程序进行编译。驱动编译的优点是我们可以指定所有的链接lib库,通常情况大家都会选择系统使用的库。而如果是mfc的类库在vc8或vc9中是根本不能自由选择的,编译都是设置死的。而采用驱动编译,就可以将这些库统统修改为mfc42.dll的依赖,这样就不存在高级版本静态链接和打包运行库的痛苦了。当然了采用这种方法时,一些vc6没有带的高级的方法是调用不了的。所以,其实也都或多或少的存在些不足。
- 摆脱vc8和vc9的依赖库困惑
- boost编译,vc8和vc9的问题
- 摆脱“依赖”
- vc6,vc.net,vc7,vc8,vc9,c,c++,c#的区别与联系
- SoLoMo的困惑:怎么让陌生人摆脱半生不熟的状态
- [Silverlight]摆脱对 ServiceReferences.ClientConfig 的依赖
- 尽可能摆脱对HttpContext的依赖
- [Silverlight]摆脱对 ServiceReferences.ClientConfig 的依赖
- 尽可能摆脱对HttpContext的依赖
- 尽可能摆脱对HttpContext的依赖
- Silverlight摆脱对 ServiceReferences.ClientConfig 的依赖
- CUDA和VC8的混合编译
- 关于VC6和VC9的区别
- 自译MSDN文献 《摆脱开发者对 CommandBuilder的依赖》
- 国产浏览器已经开始摆脱对IE内核的依赖
- 摆脱搜索引擎的过分依赖 解决SecureCRT中文显示乱码
- 认清自己,摆脱迷茫,不再困惑
- VC6和VS2005(VC8)各项目默认运行时库
- 为 Eclipse “难民”准备的 Android 和 IDEA
- 如何做一个好的产品!
- 北京下雪了
- Effective C++笔记之五 别让异常逃离析构函数
- Extjs学习总结之26treepanel异步加载
- 摆脱vc8和vc9的依赖库困惑
- hdu 1754 I Hate It
- 从记事本了解PE结构的导入表
- 目标的力量:《35岁以前成功的12条黄金法则》的3个
- windows 执行CMD命令
- Extjs学习总结之27选项卡面板tabPanel
- Listview分组
- 判断数据库中的“存在”
- 网络编程指南