我在32位Windows 7中安装了Visual Studio 2010.我需要编译我创建的vb.net程序(让我们称之为myprogram.exe),以便能够在64位Windows 7环境中运行。
我已将我的VS2010项目设置为"任何CPU"即便如此,myprogram.exe也不会在64位Windows 7上运行。但是,它在32位Windows 7上运行。
可能是因为我使用System.Data.OracleClient进行数据库连接?
64位Windows 7中的错误消息:
"此文件的版本与您正在运行的Windows版本不兼容。检查计算机的系统信息,看看是否需要该程序的x86(32位)或x64(64位)版本,然后联系软件发行商"
64位Windows 7安装了Framework v2。我附上一些照片来表明这一点。
据说,WOW64应该自动运行,但不适用于所有应用程序。
在这种情况下,我应该在我的64位Windows 7上安装一些" Windows虚拟PC"?
修改
我的VS2010 Premium是在32位Windows7环境中,只能看到"任何CPU"选项可用。我没有看到任何其他人。
我应该在64位Windows7 PC上安装一些32位虚拟Windows7"?你会推荐哪一个?
答案 0 :(得分:1)
如果在目标平台设置为AnyCPU
的情况下编译程序,那么当您在64位操作系统上运行可执行程序时,JIT编译器会发出64位系统的代码,而在32位操作系统上则会发出32位系统的代码。 / p>
从您的错误中可以清楚地看出,您的引用之间的某些内容是一个仅32位的库,因此无法从64位代码调用。
您可以切换回32位设置x86
中的Build Configuration
目标平台,或尝试识别负责的库并检查是否存在64位版本。
但是,如果您没有具体的理由使用AnyCPU
,那么您仍然可以使用x86
,因为在某些情况下,性能优于64位代码
你可以read about the PROS and CONS of AnyCPU这篇有点陈旧但又很有价值的文章
答案 1 :(得分:0)
尝试将其从“Any CPU”设置为“x86”以强制它在32位体系结构上运行。问题可能是您的程序依赖于64位体系结构不支持的DLL。