Windows x64 C#x86控制台应用程序exe似乎与“DLL任何CPU”一起使用任何潜在的问题?

时间:2010-07-21 00:44:09

标签: .net oledb console-application x86-64 windows-7-x64

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

3 个答案:

答案 0 :(得分:2)

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

您无法加载明确定位x64的程序集,因为这在32位应用程序中无效。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

加载.exe时会做出决定。程序集元数据头中的32BIT标志将确定是否加载了CLR的32位或64位。最重要的是,x86或x64 JIT编译器。之后,JIT编译器会生成适当的机器代码,无论之后加载的任何DLL的位数如何。

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