用vc2010以上版本编译可以在低版本xp和2003的运行程序的方法
来源:互联网 发布:天刀女性捏脸数据库 编辑:程序博客网 时间:2024/05/20 18:51
一直以来倍受此事困拢,vc2010以上版本编译出的exe或dll总是会引用EncodePointer和DecodePointer两个api,这两个api在xp sp2以下版本上找不到,虽然这种版本用户较少,但总有人在用,微软这贱人又不考虑这种低端用户,无奈之下,只好自己折腾,最终我用过3种方法,记录如下。
1、使用vc2008的库,用2010的编译器。这种方法需要先找一份vc2008的库,而且在工程设置里面把默认的引用路径改为2008库的路径就好。
2、安装一个vc2008版本,然后在2010的工程设置把平台工具集设为"v90"即可,这种方式兼容性最好,但不能用最新的c++语法,如auto等
3、这是刚发现的,长期以来用上面两种方法,很不方便,尤其是第二种,需要装两个vs,痛苦万分,今天下决心再找一种简单的方式,于是在stackoverflow上搜到了这篇文章
http://stackoverflow.com/questions/2484511/can-i-use-visual-studio-2010s-c-compiler-with-visual-studio-2008s-c-runtim
这种方法相对较简单,用fasm下面这段代码编译为一个obj,然后再用link链接成一个lib,最后在vc工程里最先引用这个lib即可
use32format ms coffsection ".data" datapublic __imp__DecodePointer@4__imp__DecodePointer@4 dd dummypublic __imp__EncodePointer@4__imp__EncodePointer@4 dd dummysection ".text" codedummy:mov eax, [esp+4]retn 4
这种方法简单多了,vs2010和vs2012都通用,再也不用带着一个巨大无比的vc2008库,并且可以使用最新的c++语法
- 用vc2010以上版本编译可以在低版本xp和2003的运行程序的方法
- 低版本VC2010打开高版本VC2012的方法
- 高版本Redhat Linux编译的程序在低版本系统中运行时发生“浮点数例外”的原因和解决办法
- Android 在低版本4.4以上 动态设置状态栏和底部导航栏的背景色
- IAR9.0以上版本编译低版本的协议栈常见错误及解决方法
- IAR9.0以上版本编译低版本的协议栈常见错误及解决方法
- 如何编译出兼容4.3, 4.3以下和以上版本的iOS静态库文件?及在4.2真机上运行?
- java程序的编译和运行依赖jdk版本问题
- 低版本jQuery在Firefox中运行不正确的解决
- AFNetWorking 在低版本sdk下编译不过的问题
- 关于x264 2011在VC2005及以上版本的编译
- 在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
- 在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
- 在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
- 在PHP5.3以上版本运行ecshop和ecmall出现的问题及解决方案
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行(转)
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行
- 为什么VC中DEBUG版本可以正常运行的程序有时无法在RELEASE版本下正常运行
- AndroidManifest 文件能做什么?
- 第一节 CSS学习--样式表简介
- 黑马程序员 关于单例设计模式的一些理解
- eclipse报错:Failed to load the JNI shared library
- 每日站会说什么?
- 用vc2010以上版本编译可以在低版本xp和2003的运行程序的方法
- java从List<Map>导出excel
- 鼠标右键【新建】没有Office2003
- 检查点类型
- 简说敏捷团队各角色
- 性能测试及系统优化类型的用户故事
- HDU1728逃离迷宫(BFS)
- 有害的“这样效率最高”思维
- Qt4.7.1编译pc版本的时候:collect2:ld terminated with signal 9(或11)