为什么我的64位程序能够成功调用32位DLL?

3

我有一个针对x64平台目标编译的C#程序。它使用C1.C1Zip,这是一个处理Zip文件的dll文件。检查C1.C1Zip.dll,它是一个32位的dll文件(PE Deconstructor说是32位字)。但我的程序肯定是64位的(任务管理器说是64位 - 详细信息选项卡上显示平台为64位)。

我刚刚成功运行了使用C1.C1Zip dll的代码,并且它能正常工作。据我所知,这是不可能的。

这是怎么回事?

我可以运行哪些额外诊断以确保我的主程序确实是64位的?

1个回答

3

因为它一开始就不是本地dll。它是托管代码 - 字节码 - 必须是这样的。在这种情况下,32位或64位与启动exe文件有关(确定进程以32位或64位运行),但后面加载的本地程序集则不相关。


谢谢 - 那很有道理。如果微软的文档没有明确表示这是不可能的,那就好了! - Nikki Locke
1
除非程序集仅为托管程序,否则它们不会通过正常的 DLL 加载器加载。 - TomTom

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