如何在64位Windows 7中运行32位vb.net程序?

时间:2014-04-04 13:37:40

标签: windows visual-studio-2010 32bit-64bit vb.net-2010

我在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"?

enter image description here

修改

我的VS2010 Premium是在32位Windows7环境中,只能看到"任何CPU"选项可用。我没有看到任何其他人。

enter image description here

我应该在64位Windows7 PC上安装一些32位虚拟Windows7"?你会推荐哪一个?

2 个答案:

答案 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。