【问题标题】:What are Native DLLs?什么是原生 DLL?
【发布时间】:2010-10-22 09:36:10
【问题描述】:

当我在 StackOverflow 上阅读有关 DLL 的信息时,我多次遇到“本机 DLL”这个词。我发现了有关它们的问题,但我无法理解“本机 DLL”到底是什么。

什么是原生 DLL?

【问题讨论】:

    标签: dll native


    【解决方案1】:

    本机 DLL 通常是包含原始处理器可直接执行代码(例如 Win32 API 中的代码)的 DLL,而不是托管 (MSIL),它包含使用的代码并通过 JIT 编译为本机处理器指令.NET CLR 等运行时。

    在 .NET 中,还可以创建包含本机二进制代码和托管代码的混合模式 DLL。

    【讨论】:

    • 它们被称为“本机”,因为它们包含的代码对于系统处理器来说是“本机”的,不需要翻译。
    • @bevan - 这不是我刚才说的吗?
    • 我以为您忽略了“本机”与托管 DLL 的系统相关。重读后,也许我错了。
    【解决方案2】:

    这个术语是在发明来自 .net 程序集的托管代码时出现的,用于区分托管和非托管 =native 代码。 每个 .net 程序集在执行期间都会被 JIT 编译器“原生化”。这意味着它会被翻译成 CPU 可以“本机”理解的 asm 代码。

    【讨论】:

      【解决方案3】:

      本机 DLL 一词最初是在托管代码存在之前使用的。它最初旨在引用不是 COM DLL 的 DLL。它旨在引用最初在 Windows 中的 DLL。

      请注意,Kev 说过“在 .NET 中也可以创建包含本机二进制代码和托管代码的混合模式 DLL。”但这不相关;这样的 DLL 不是本机 DLL,因为它具有 CLI (.Net) 元数据。此外,混合模式 DLL 只能使用 C++/CLI 开发;没有其他语言支持它。

      查看我的文章Native Windows Dynamic Link Libraries (DLLs)了解更多信息。

      【讨论】:

        【解决方案4】:

        据我了解,“本机 DLL”将是一个基本的 Win32 dll。包含非托管代码的 DLL。

        使用 .NET,您可以编写托管程序集。这些将调用与非托管应用程序调用相同的基本 Windows 代码。

        【讨论】:

          【解决方案5】:

          快速浏览这些 MSDN 搜索结果将回答您的问题:

          http://social.msdn.microsoft.com/Search/en-US?query=define:%20native%20dll&ac=8

          这是一个包含机器代码而不是 MSIL 的简单 DLL。

          【讨论】:

          • 有趣的是,您的链接目标将这篇文章准确地显示为第 1 个匹配项。这种无休止的递归可能会导致...堆栈溢出;-)
          猜你喜欢
          • 1970-01-01
          • 2018-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-03
          • 2012-09-24
          • 2018-09-27
          相关资源
          最近更新 更多