.net – x64应用程序可以使用x86程序集,反之亦然吗?

我的应用程序被构建为x64应用程序。在移动到VS2010后,我得到了some problems,这似乎与某些x64 / x86不匹配的引用dll。现在我正在移动到目标.NET4,我得到更多similar problems

我的问题是:我需要采取关于混合x64和x86的预防措施。可以做到吗?我认为x64应用程序应该能够使用x86 dlls没有问题。没有?另一种方式呢? x86应用程序可以引用x64 dll – 只要它在x64平台上运行?什么是我需要注意的陷阱?

最佳答案
不,64位进程只能加载64位DLL,而32位进程只能加载32位DLL。你可能想到的是,64位操作系统可以运行32位进程。

.NET的主要问题是 – 在VS2010之前 – 可执行项目默认为“AnyCPU”,这意味着它将运行它的操作系统的“本机”格式加载(因此32位为32位版本的Windows和64位用于64位版本的Windows)。问题是,如果你测试你的应用程序在32位Windows(说),那么如果你加载32位DLL并试图在64位Windows上运行可能会中断。

在VS2010中,它们默认所有可执行项目为“x86”(即32位),这在大多数情况下减轻了问题。

转载注明原文:.net – x64应用程序可以使用x86程序集,反之亦然吗? - 代码日志