相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程序猿来说都是一个模棱两可的问题。当然,我也是捣腾了好久,才渐渐搞明白它们的区别,以此作个总结:

一 、x86、x64、Any CPU的区别

简单的说,它们之间最直接的区别就是:x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。以此类推,x64对应的则是64位的。而Any CPU则是取决于当前的操作系统,若操作系统是32位的,则编译出来的程序就是32位的,反之编译出来的就是64位程序。

若你的启动项目,即主程序(编译出来是exe文件的)是x86平台 下编译的,而它所依赖的一个项目(或动态链接库)是由x64位平台 编译出来的,则会提示“未能加载文件或程序集…或它的某一个依赖性。试图加载格式不正确的程序。”之类的错误。这是因为32位程序不能加载64位的dll,更不能调用其中的类、方法和对象等。

反之,若主程序是由x64平台编译出来的,而dll是x86的呢?答案。。也是不行的!说到这里,基本上可以确定一点:dll和主程序的生成平台只要一致就可以。

那么问题来了!若主程序是Any CPU编译的,而dll是由x86或者x64平台编译的,又或者,主程序是x86或者x64平台编译的,而dll是由Any CPU编译的呢?正确答案就是两者在“特殊情况”下都是可行的。为什么说是“特殊情况”下呢?因为第一点也提到了,Any CPU取决于操作系统,而结合第二点上半部分提到的,只要dll和主程序的生成平台一致,那么也是可行的。

所以,由上可知:若主程序是在Any CPU平台下编译的,那么编译dll的平台必须要和编译主程序的操作系统一致才行。若主程序是在x86或者x64平台下编译的,那么dll就必须要和主程序一致。不过有个特例:若dll由Any CPU编译的,那么这个dll就可以被32位和64位的主程序调用。这是为什么呢?请看第三点。

虽说Any CPU编译出来的程序取决于操作系统,但是由Any CPU编译出来dll则取决于调用它的主程序,即若主程序是32位的,那么dll也是32位的,若主程序是64位的,那么dll就是64位的。所以dll一般采用Any CPU平台编译,而主程序一般采用x86平台编译。

使用x86平台调试的时候,是可以一边调试一边修改代码的,而x64平台下则不行(启用了编辑并继续的)。如下图:

调试时修改代码提示如下:

总结:了解了它们的区别之后,我们打包程序的时候就知道如何取舍了。一般来说,在不清楚客户的电脑是什么类型的操作系统的情况下,或者两者都有的时候,则主程序采用x86平台编译,dll采用Any CPU平台编译。若清楚的知道是64位操作系统,那么就可以都按x64平台编译了。

二、Debug和Release的区别

Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。所以一般都是用Release来打包发布程序,另外,Release打包出来的程序也相对来说会小一些。

在Release模式下是不能一边调试一边修改代码的(启用了编辑并继续的)。调试时修改代码提示如下图:

转自:关于VS项目平台的x86,x64,Any CPU以及Debug和Release

以上便是我对它们的理解,若有说的不对的欢迎指正,若有不足的欢迎补充!

关于VS项目平台的x86,x64,Any CPU以及Debug和Release相关推荐

  1. 关于VS项目平台的x86,x64,Any CPU以及Debug和Release的区别

    相信对于很多刚接触打包程序的同志来说,关于x86,x64,Any CPU这三个项目平台,以及解决方案配置Debug和Release有什么区别?这个问题一定有许多的困惑,甚至不乏一些已经工作了很久的老程 ...

  2. vs项目属性中目标平台x86,x64,any cpu的区别

    一.Any CPU平台下 编译出来的exe(可执行文件)或dll(动态链接库)是兼容的,取决于当前的操作系统,若操作系统是32位的,则编译出来的程序会以32位的软件模式运行,而在64位操作系统下则会以 ...

  3. 关于.NET编译的目标平台(AnyCPU,x86,x64) (转)

    关于.NET编译的目标平台(AnyCPU,x86,x64)(转) 今天有项目的代码收到客户的反馈,要求所有的EXE工程的目标平台全部指定成x86,而所有DLL工程的目标平台全部指定成AnyCPU . ...

  4. 关于.NET编译的目标平台(AnyCPU,x86,x64)

    在VisualStudio中项目平台属性包含x86/x64/AnyCPU三个选项,之前的项目中并没有特别去关注这一点,最近的项目中涉及到了在不同平台运行的问题,所以专门了解并整理了这方面的知识. x8 ...

  5. Win10+VS2015平台下OpenCV3.1.0的x86和x64平台的Debug与Release模式的编译与配置

    闲话 昨天晚上在新电脑上重新配置了OpenCV3.1,之前虽然也弄过,不过当时是初学者,只是照着网上的教程简单的配置了Debug模式下x86的运行环境(大部分的教程也只教了这种方式的配置......) ...

  6. vs2015 x86的Qt项目迁移到vs2017 x64平台

    今天用vs打开别人给的qt工程,发现版本不一致,弹了一个"重定向项目"的对话框. 我的配置是vs2017+Qt 5.9.7_msvc_x64,显然,点了确定后点生成是不会成功的,会 ...

  7. 一起学习x86/x64知识(一)

    在实际工作中接触到一些与x86/x64平台底层的问题时,往往是遇到不懂的就翻翻Intel或AMD提供的手册,这样掌握并不牢固,下次重遇问题时还要翻手册.现在让我们一起来系统地学习x86/x64体系知识 ...

  8. CPU的构架之ARM和Intel的区别(x86/x64/ARM64/ARM)

    Introduction As we all know, a Processor is an integrated electronic circuit that performs various c ...

  9. 《x86/x64体系探索及编程》图书信息

    x86/x64体系探索及编程 (对x86处理器介绍得最详尽又最具实践指导意义的一本书) 邓志著 ISBN 978-7-121-18176-4 2012年10月出版 定价:119.00元 16开 840 ...

最新文章

  1. jquery改变css,改变style
  2. IDEA无法通过类加载器获取resources文件夹配置文件解决办法
  3. Android之手机出现已安装了存在签名冲突的同名数据包的原因及解决办法
  4. nodejs+nginx获取真实ip
  5. html5网页制作代码_好程序员HTML5大前端常用开发工具大集合
  6. 【原创】centos常见问题集锦
  7. 机器学习之旅:三分钟读懂最大熵模型
  8. Centos 7 配置 apache 网站
  9. UDS协议(史上最全)
  10. 2021年塔式起重机司机考试报名及塔式起重机司机免费试题
  11. 星期、月份英文缩写对照表
  12. 两种方法分析每月工作日计算程序
  13. 招聘网站分析-前程无忧网站的爬虫设计与实现
  14. xfce-因为面板在 kiosk 模式下运行,所以不允许作为普通用户的您更改面板配置
  15. 1月16日服务器例行维护更新公告,1月16日例行维护暨版本更新公告
  16. 学计算机理论课要记笔记吗,学生应该用笔记本电脑记笔记吗?
  17. MSDC 4.3 接口规范(19)
  18. SDN 教程[2]: SDN基础操作
  19. 15 《上帝之饮:六个瓶子里的历史》 -豆瓣评分7.5
  20. 装箱单Packing list

热门文章

  1. 一步一步学习SignalR进行实时通信_6_案例
  2. windows平台下杀死指定端口的进程(转载)
  3. apache忽略文件后缀
  4. 机房管理系列之文件服务器管理
  5. 关于使用Windows Live Writer
  6. 基于SSM+Layui实现医院预约挂号系统
  7. python移动窗口函数
  8. Linux下查看Go语言软件运行情况
  9. BigDecimal 类型转换、运算、比较
  10. Mashmokh and Numbers CodeForces - 415C