混合使用32位和64位托管程序集

5

大家好,

我有一个运行在32位机器上的.NET托管应用程序。 我已经编译成64位并将其移植到64位机器上了。 但是,我依赖于一些第三方DLL,这些DLL是32位程序集。 在64位机器上,我能否混合使用64位和32位程序集进行执行?

谢谢!

3个回答

6
如果它们在同一个进程中运行,则不会出现问题。操作系统上的进程无法加载不同“位数”的程序集。一旦选择,所有程序集都必须符合要求。如果尝试将32位DLL加载到64位进程中或反之,则通常会出现“BadImageFormatException”错误。有三个选项:
1. 获取问题DLL的64位版本(理想情况)。 2. 一直以32位独占模式运行(通常是所选路径)。 3. 在另一个进程中运行问题DLL,并使用类似IPC的东西跨进程边界进行通信(极端,但我曾经不得不这样做过)。
在64位操作系统上以32位运行没有任何本质问题,请不要陷入认为它会变慢的误区。

0

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


0

根据我的经验,不行。

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

请确保将Visual Studio设置为编译为x86,而不是任何CPU。

还要注意,生成的DLL和可执行文件会放在稍微不同的位置。

例如:

bin\x86\Debug

而不是

bin\Debug


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