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

How come my 64-bit program is calling a 32-bit DLL successfully?

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

我刚刚成功 运行 使用了 C1.C1Zip dll 的代码,并且运行良好。我被告知这是不可能的。

怎么会这样?

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

因为它不是一开始的本机 dll。它只是托管代码——字节码。在这种情况下,32 位或 64 位与起始 exe 文件相关(确定进程运行的是 32 位还是 64 位),但与稍后加载的本机程序集无关。