C# 32位项目在64位Windows下的问题

3

我正在开发一个表单应用程序,使用了大量的硬件,包括Wiimote、USB手柄和串口。在32位Windows下一切正常,但我不得不升级到64位以便于我正在开发的其他应用程序。

经过一些研究,我发现可以在x64系统下开发x86应用程序,但我不确定这是否是我想要的。问题的根源显然是directX sdk。另一个选项是为开发此应用程序安装一个虚拟x86机器(我不想双启动)。我以前从未使用过这个,所以我有点担心所有这些硬件是否能在虚拟机下工作。

我使用wiimoteLib和blueSoleil连接蓝牙。那么这样可以工作吗?我应该使用Windows 7的虚拟XP选项还是其他虚拟机软件?我可能会使用WinXP作为虚拟操作系统。


3
我不明白问题所在 - x86 应用在 x64 上可以完美运行。 - David Heffernan
1
我有许多32位应用程序可以在我的Windows 7 64位上运行。 - Saif al Harthi
2
我认为最好尝试让这个工作,如果你遇到问题,只需发布您获得的任何错误详细信息。这个问题非常专业化,这是获得好答案的唯一途径。 - NotMe
4个回答

4

32位应用程序在64位操作系统上运行得非常好。我有很多为32位开发的应用程序,在64位上运行没有任何问题。正如你所说,你有很多硬件设备使用,我们无法确定哪些可能工作或不工作。

最好的解决方案是在64位上运行您的应用程序,查看是否有任何问题(我相信95%会正常工作),然后回到这里提出具体的问题。


当你说“在64位上运行你的应用程序”时,我认为你的意思是,在64位Windows上运行32位版本的应用程序。 - David Heffernan
哦,对不起!那就是我想说的。 - Shoban
串行通信已经可以工作了。我在使用蓝牙设备和USB手柄的部分遇到了问题。我认为问题在于安装的dx_sdk包含x64库,但我正在尝试构建需要x86库的x86应用程序。这可能是原因吗? - delegate
我遇到了以下错误 System.BadImageFormatException未处理 Message=无法加载文件或程序集'Microsoft.DirectX.DirectInput.dll'或其某个依赖项。并非有效的 Win32 应用程序。(来自 HRESULT 的异常:0x800700C1) - delegate
@delegate 如果程序某种方式链接到了64位版本的DX,那么你可能会遇到这样的错误。在64位Windows上运行32位应用程序使用DX应该不会有任何问题 - 我经常这样做。 - David Heffernan

2
  1. 在 IIS (7) 内部,单击“应用程序池”。

  2. 在列表中找到为您的 Web 应用程序配置的应用程序池。

  3. 选择它,然后在右侧单击“高级设置”。

  4. 列表中的第二个设置:启用 32 位应用程序 - 必须设置为 True。


1

在Visual Studio中编译应用程序时,请尝试将目标平台设置为x86,而不是“任何CPU”(项目选项/生成/目标平台)。


1
我在64位开发电脑上运行32位应用程序时遇到了同样的问题。在VS 2010中,我不得不进入属性/配置管理器/新建并选择x86。然后我进行了清理和重建,它就可以正常运行了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接