2012-02-15 95 views
3

全部,混合32位和64位管理组件

我有一个运行在32位机器的.NET托管应用程序。 我很好,将它编译为64位并将其移植到64位机器上。 但是我依赖于一些第三方DLL是32位程序集。 我可以将64位和32位程序集一起在64位机器上执行吗?

谢谢!

回答

4

若它们在同一进程中运行。

OS上的进程无法加载不同“比特级”的程序集。一旦选定,所有组件必须符合。通常,如果您尝试将32位DLL加载到64位进程中,您将得到一个BadImageFormatException,反之亦然。

三个选项:

  1. 获取问题的DLL(理想)的64位版本。
  2. 始终以32位的方式运行(通常是选定的路径)。
  3. 在另一个进程中运行问题DLL并使用类似IPC的东西来跨进程边界进行对话(极端,但我必须这样做一次)。

在64位操作系统上运行32位操作系统本身并没有什么错误,不要陷入它认为速度会变慢的陷阱。

0

从我自己的经验来看,没有。

我开发了一个系统,它依赖于我无法控制的32位iSeries COM库。遇到问题,并通过编译32位版本的应用程序来修复它们。

只需确保不是针对任何CPU,而是将Visual Studio设置为编译为x86。

另外请注意,您生成的DLL和可执行文件的位置稍有不同。

例如

斌\ 86 \调试

代替

斌\调试

0

不要忘记,如果你运行32位它可能不会更慢,但你可能会用完内存。