C#中Any CPU和X86和X64平台的差异对比
最近在C#项目中嵌入一个视频软件Ffplayer,出现报错现象,提示平台开发视频.dll文件的兼容性和加载格式不正确的问题。最终查看是由于项目平台选择的是Any CPU和X86的引起的。目标平台有什么作用,各选项有什么差别。
一、在VisualStudio中,在编译设置中有如下选项:
x86: 将程序集编译为由兼容 x86 的 32 位公共语言运行库运行。
x64: 将程序集编译为由支持 AMD64 或 EM64T 指令集的计算机上的 64 位公共语言运行库运行。
anycpu:(默认值)将程序集编译为在任意平台上运行。
Itanium: 将程序集编译为由采用 Itanium 处理器的计算机上的 64 位公共语言运行库运行。
二、具体行为如下:
1)在 64 位 Windows 操作系统上:
用 x86 编译的程序集将在 WOW64 下运行的 32 位 CLR 上执行。
用 x64 编译的程序集将在 64 位 CLR 上执行。
用 anycpu 编译的可执行文件将在 64 位 CLR 上执行。
用 anycpu 编译的 DLL 将在与加载它的进程相同的 CLR 上执行。
2)在 32 位 Windows 操作系统上:
用 x86或anycpu 编译的程序集将在 32 位 CLR 上执行。
用 x64 编译的程序集无法运行。
说明:现在大多数用户使用的都是在WINXP以上的系统中运行程序(不管是32位的还是64位的),因此,基本不可能选择X64的编译程序集。 是不是都选择Any CPU这种默认方式就不会存在问题了呢?
首先看看Any CPU和x86的可执行文件(EXE)在32位和64位下有什么区别:Any CPU在32位下,EXE将以32位执行,而在64位下,EXE将以64位执行。而x86的话,始终以32位执行。
如果用户希望使用x86,也就是不希望64位下用64位方式执行EXE程序。系统中可能存在第三方的32位DLL,一旦使用64位执行的EXE,在调用到32位的DLL时,将无法调用。
如果用户希望使用Any CPU,是因为DLL的实际运行方式是受调用它的EXE所影响的,因此设为Any CPU就可以了(即选择默认)。而如果设定为x86,虽然看似没什么问题,但其无法在64位CLR中运行了,存在缺陷。
C#中Any CPU和X86和X64平台的差异对比相关推荐
- Windows下x86和x64平台的Inline Hook介绍
原文链接:https://blog.csdn.net/PeaZomboss/article/details/129095200?spm=1001.2014.3001.5501 前言 我在之前研究文明6 ...
- Win10+VS2015平台下OpenCV3.1.0的x86和x64平台的Debug与Release模式的编译与配置
闲话 昨天晚上在新电脑上重新配置了OpenCV3.1,之前虽然也弄过,不过当时是初学者,只是照着网上的教程简单的配置了Debug模式下x86的运行环境(大部分的教程也只教了这种方式的配置......) ...
- x86 和 x64平台下数据类型大小
x86平台 x64平台 从以上测试可知,不管是x86平台还是x64平台,int类型大小都是32位4个字节 http://msdn.microsoft.com/en-us/library/aa38375 ...
- ARM和X86、X86和X64、Intel和AMD、CPU和GPU介绍
一.ARM和X86 X86 和 ARM 都是CPU设计的一个架构.X86 用的是复杂指令集.ARM用的是精简指令集. 指令集其实就是机器码,机器码上是汇编,汇编之上是程序语言例如java.c.c#. ...
- x86、x64、amd64和arm CPU 架构 MSVC的各种版本 Visual Studio的安装
Visual Studio的安装 https://blog.csdn.net/Copperxcx/article/details/122540629 x86.x64和amd64 参考讲得很好的一篇文章 ...
- vs打包错误:要在“系统必备”对话框中启用“从与我的应用程序相同的位置下载系统必备组件”,必须将“Microsoft .NET Framework 4.7.2 (x86 和 x64)”项的文件
错误内容: ERROR: 要在"系统必备"对话框中启用"从与我的应用程序相同的位置下载系统必备组件",必须将"Microsoft .NET Frame ...
- 文件后缀中的x86和x64 是什么意思?
在文件后缀中,"x86"和"x64"通常表示不同的计算机体系结构或处理器架构. x86:x86是一种32位计算机体系结构,最初由Intel开发.它是目前广泛使用 ...
- x86 vs x64
今天看到某青年的blog转贴, 那文章写得真是阎王爷打报告, 鬼话连篇. 现在网上的东西真不能看. 在这里我来写一点点关于x86和x64的东西. i686 : Intel 686 ( Pentium ...
- 【计算机】X86 arm X64 X32.....
简介 ARM ARM64是CPU构架的一种,通常用于手机.平板等CPU,目前笔记本电脑也会采用ARM64构架的CPU. x86 x86是CPU构架的一种,通常用于笔记本电脑.台式电脑.服务器.超级计算 ...
最新文章
- swagger 返回json字符串_Net Core微服务入门全纪录(完结)——Ocelot与Swagger
- 编码练习——Java-String-API-练习
- mysql管理节点_MySql节点管理安装步骤需要在SerA和SerB上各做一次
- linux C 获取日期时间
- android 跨应用,Android跨应用获取资源
- java gui容器_[Java教程]GUI Panel 容器以及布局管理器
- 转载 - Linux 磁盘挂载
- TensorFlow学习笔记01:TensorFlow入门
- 使用 Sixel 图形格式在终端中显示缩略图
- 30. Element parentNode 属性
- echarts graph图重叠_借官方关系图尝试下屏蔽鼠标浮在 links 上弹出的提示框
- 计算机接口74LS138,搞定138译码器(一),译码器介绍+74LS 138译码器逻辑功能
- tumblr_如何在您的Tumblr博客中添加论坛
- 中文代码示例视频演示Python入门教程第五章 数据结构
- SpringBoot实现短信验证码校验
- 2.1 zio入门——把函数作用作为工作蓝图
- mac 开机启动php,mac系统,php-fpm加入开机启动项
- scratch二级考纲
- 关于交换数组元素的技术帖
- HDU-1425 排序