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