C#使用anycpu 编译需要什么CPU在本地运行没问题,在其他机器运行奔溃,报错: System.BadImageFormatException

无论64位或32位系统下VS编译需要什麼CPU出来的DLL只取决于项目的“目标平台”设置,如下图

换句话说只有设置好了“目标平台”,32位或64位下的VS编译需要什么CPU出的DLL没有差别。

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

对于刚接触打包程序的新手我来说,关于x86,x64,Any CPU这三个项目平台x86平台编译需要什么CPU出来嘚exe(可执行文件)或dll(动态链接库)都是32位的。x64对应的则是64位的而Any CPU则是取决于当前的操作系统,若操作系统是32位的则编译需要什么CPU出来的程序僦是32位的,反之编译需要什么CPU出来的就是64位程序 若你的启动项目,主程序和.dll是基于不同平台编写的,则会提示“未能加载文件或程序集…或它的某一个依赖性试图加载格式不正确的程序。”之类的错误可以肯定的是,平台要保持一致才可以调用。

若主程序是Any CPU编译需要什么CPU的而dll是由x86或者x64平台编译需要什么CPU的,又或者主程序是x86或者x64平台编译需要什么CPU的,而dll是由Any CPU编译需要什么CPU的呢两者在“特殊情況”下都是可行的。Any CPU取决于操作系统只要dll和主程序的生成平台一致,那么也是可行的

由上可知:若主程序是在Any CPU平台下编译需要什么CPU的,那么编译需要什么CPUdll的平台必须要和编译需要什么CPU主程序的操作系统一致才行若主程序是在x86或者x64平台下编译需要什么CPU的,那么dll就必须要囷主程序一致不过有个特例:若dll由Any CPU编译需要什么CPU的,那么这个dll就可以被32位和64位的主程序调用虽说Any CPU编译需要什么CPU出来的程序取决于操作系统,但是由Any CPU编译需要什么CPU出来dll则取决于调用它的主程序即若主程序是32位的,那么dll也是32位的若主程序是64位的,那么dll就是64位的所以dll一般采用Any CPU平台编译需要什么CPU,而主程序一般采用x86平台编译需要什么CPU 

总结:则主程序采用x86平台编译需要什么CPU,dll采用Any CPU平台编译需要什么CPU若清楚的知道是64位操作系统,那么就可以都按x64平台编译需要什么CPU了

我要回帖

更多关于 cpu为什么可以编译 的文章

 

随机推荐