3

我的电脑运行 Windows 7 X64 企业版。当我使用 Visual Foxpro OLEDB 驱动程序时,我的可执行文件需要 x86 模式。我认为编译这个exe用作“X86”的库DLL是必需的。但是,使用“任何 CPU”编译的 DLL 似乎可以工作,这非常方便,因为它们可以在其他地方使用,无需维护 2 个副本。只是想知道它是如何工作的,我应该继续这样吗?

4

3 回答 3

2

这可以。只要可执行文件是针对 x86 编译的,任何“任何 CPU”目标程序集都将作为 x86 加载。

您只是无法加载显式针对 x64 的程序集,因为这在 32 位应用程序中不起作用。

于 2010-07-21T00:45:09.450 回答
2

如果进程是 x64 或 x86,则任何 CPU DLL 都将 JIT 编译为 x86 或 x64。只要您的 exe 编译为 x86,DLL 就会被 JITed 为 x86。如果您的 exe 是 x64,则 DLL 将被 JITed 为 x64。

于 2010-07-21T00:46:26.450 回答
1

在加载 .exe 时做出决定。程序集元数据头中的 32BIT 标志将决定是加载 32 位还是 64 位的 CLR。而且,最重要的是 x86 或 x64 JIT 编译器。之后,JIT 编译器生成适当风格的机器代码,而不管之后加载的任何 DLL 的位数。

因此,只有 EXE 的目标平台设置很重要。

于 2010-07-21T01:08:28.900 回答