编译平台与目标平台不一致带来的麻烦



今天VS2010编的EXE在XP上显示不是有效的win32应用程序,为此,我们需要编写出对环境依赖小的,能到处跑的程序;

一、X86,即一般普通PC上跑的程序版本,不用修改工程属性

二、X64

1、设置工程平台---会在工程目录下生成  X64 文件夹

在工具栏--->生成--->配置管理器 窗口

设置“活动解决方案平台”和“平台” 为X64,“平台”那里没有X64,就点击新建。

2、选择目标机器平台

在工具栏--->项目--->xx属性 窗口

选择  “配置属性”--->"链接器"--->"高级"--->"目标计算机"--->"MachineX64"

 三、DLL依赖问题

1、取消依赖CLR     

选择  “配置属性”--->"C/C++"--->"公共语言运行时支持"  设置为无

2、设置MFC库连接方式

“配置属性”--->"常规"--->"MFC使用"

设置为   “使用标准windows库“  或 ”在静态库中使用MFC“

3、设置代码生成运行库

“配置属性”--->"C/C++"--->"代码生成"

设置 ”运行库” 为 "多线程/MT"

附上CSDN论坛上的一个版主的说明:

1. 确定用的是32位编译器 
2. 确定不使用/clr选项:这将依赖.NET 
3. 确定使用/MT静态链接CRT 
这样编译出来的程序自然可以到处跑。

四、可能出现的情况

1、X64下工程平台和机器目标平台不一致报错

fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突——我的解决方案 

五、备注

1、活动解决方案平台,这个和目标程序运行没什么关系,应该不用设置。

验证 “活动解决方案平台” 为X64 , 项目平台设置为“WIN32”,在X86 xp下还是能运行,生成程序的目录在Release下,而不是X64/Release

2、项目平台改变,目标平台也会改变

验证 “目标计算机” 设置为“MachineX64” , 切换工程平台为WIN32时,查看 “目标计算机” 设置已变成 “MachineX86”

3、X86运行X64编译出来的程序报错信息如下:


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值