VS中编译64位程序以及遇到的问题(E0000235)
2013-08-31 23:15
357 查看
安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器。 1. 选择“Build” – “Configuration Manager”菜单,打开配置管理器。点击新建解决方案平台。 2. 选择“x64”平台,点击确定按钮。 3. 这时候配置管理器中的平台已经改成刚才选择的x64了,这时候编译出来的就是64位程序了。可以在工具栏的平台下拉框中快速切换目标平台。 4. 如果在选择平台的下拉列表里找不到x64,可能是没有安装x64编译支持。在VS安装程序里再装上就可以了。
工程配置管理的误区:
在VS2012中如果有多个工程,比如:
![](http://img.blog.csdn.net/20130831225815828?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hhdGRheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
其中一个工程设置为X64,且设置为"Set as StartUp Project",这里设置的是WDMInstall工程 如图:
![](http://img.blog.csdn.net/20130831231342234?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hhdGRheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这是编译调试栏显示为:
![](http://img.blog.csdn.net/20130831231423125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hhdGRheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
可以看到这是一个X64的工程,当焦点移到切换到其它工程时比如test工程,编译调试栏还是会显示X64,如图:
![](http://img.blog.csdn.net/20130831230316843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hhdGRheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
这很容易让人误认为test工程也配置的是一个X64工程,其实不然,打开配置管理可以看到:
![](http://img.blog.csdn.net/20130831230505125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2hhdGRheQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
test工程是一个32位的工程,所以工程的配置还需要通过配置管理器具体配置,不能单从界面来看。 这个误区引发的问题:比如test中有函数SetupDiCallClassInstaller的调用,这里误以为test为X64,编译以后放到win7 64位的系统上,这时SetupDiCallClassInstaller函数调用失败,错误代码E0000235,原因是需要一个64位的程序(SetupDiCallClassInstaller函数对调用它的当前程序有要求的,必须是和系统位数相匹配的程序,比如当前是win7 X64 调用SetupDiCallClassInstaller函数的程序也必须是64位的 如果当前是WIN7 32 调用SetupDiCallClassInstaller函数的程序也必须是32位的 这个具体说来还是WOW64子系统支持不完善,关于WOW64子系统介绍详见:http://blog.csdn.net/whatday/article/details/10899335)如果进入误区认为test产生的就是一个X64的程序,那么这个问题将非常困惑。
工程配置管理的误区:
在VS2012中如果有多个工程,比如:
其中一个工程设置为X64,且设置为"Set as StartUp Project",这里设置的是WDMInstall工程 如图:
这是编译调试栏显示为:
可以看到这是一个X64的工程,当焦点移到切换到其它工程时比如test工程,编译调试栏还是会显示X64,如图:
这很容易让人误认为test工程也配置的是一个X64工程,其实不然,打开配置管理可以看到:
test工程是一个32位的工程,所以工程的配置还需要通过配置管理器具体配置,不能单从界面来看。 这个误区引发的问题:比如test中有函数SetupDiCallClassInstaller的调用,这里误以为test为X64,编译以后放到win7 64位的系统上,这时SetupDiCallClassInstaller函数调用失败,错误代码E0000235,原因是需要一个64位的程序(SetupDiCallClassInstaller函数对调用它的当前程序有要求的,必须是和系统位数相匹配的程序,比如当前是win7 X64 调用SetupDiCallClassInstaller函数的程序也必须是64位的 如果当前是WIN7 32 调用SetupDiCallClassInstaller函数的程序也必须是32位的 这个具体说来还是WOW64子系统支持不完善,关于WOW64子系统介绍详见:http://blog.csdn.net/whatday/article/details/10899335)如果进入误区认为test产生的就是一个X64的程序,那么这个问题将非常困惑。
相关文章推荐
- VS中编译64位程序以及遇到的问题(E0000235)
- VS中编译64位程序以及遇到的问题(E0000235)
- VS2008中编译64位程序以及遇到的问题 .
- 在VS2008中编译64位程序以及遇到的问题
- 在VS2008中编译64位程序以及遇到的问题
- VS2008中编译64位程序以及遇到的问题
- [置顶] vs2015编译运行程序遇到应用程序无法正常启动0xc000007b的问题
- 在64位机子调用vs编写的win32 c++程序遇到问题
- 用VS编译VC6.0程序时常遇到的问题
- Android程序的反编译和防止反编译,以及操作过程中遇到的一些问题
- VS调试问题,程序无法正常启动 (使用openFlight_API中遇到的问题)
- 编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;
- 转 解决64位ubuntu上编译32bit程序的问题
- zlib 2.1.8 编译遇到的问题以及解决方法
- 使用VS开发基于Oracle程序的严重问题32位64位
- 静态编译mysql库到程序中遇到的问题
- CCS编译中常常遇到的问题以及解决办法
- 编译《深入解析MFC》第一个程序遇到的问题
- vs下c++中main _tmain以及控制台程序结束后不出现press any key to continue问题
- 在 Sublime Text 2 中编译和运行 Java 程序,以及输出中文出错问题解决办法