【问题标题】:How come my 64-bit program is calling a 32-bit DLL successfully?为什么我的 64 位程序成功调用了 32 位 DLL?
【发布时间】:2020-07-18 07:16:47
【问题描述】:

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

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

这是怎么回事?

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

【问题讨论】:

    标签: c# .net 32bit-64bit


    【解决方案1】:

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

    【讨论】:

    • 谢谢 - 这很有道理。如果只有微软的文档没有明确表示这是不可能的!
    • 这是不可能的——除非程序集只有在被管理的情况下不会通过正常的 dll 加载器加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 2011-01-28
    • 2017-03-08
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多