【发布时间】:2010-10-22 09:36:10
【问题描述】:
当我在 StackOverflow 上阅读有关 DLL 的信息时,我多次遇到“本机 DLL”这个词。我发现了有关它们的问题,但我无法理解“本机 DLL”到底是什么。
什么是原生 DLL?
【问题讨论】:
当我在 StackOverflow 上阅读有关 DLL 的信息时,我多次遇到“本机 DLL”这个词。我发现了有关它们的问题,但我无法理解“本机 DLL”到底是什么。
什么是原生 DLL?
【问题讨论】:
本机 DLL 通常是包含原始处理器可直接执行代码(例如 Win32 API 中的代码)的 DLL,而不是托管 (MSIL),它包含使用的代码并通过 JIT 编译为本机处理器指令.NET CLR 等运行时。
在 .NET 中,还可以创建包含本机二进制代码和托管代码的混合模式 DLL。
【讨论】:
这个术语是在发明来自 .net 程序集的托管代码时出现的,用于区分托管和非托管 =native 代码。 每个 .net 程序集在执行期间都会被 JIT 编译器“原生化”。这意味着它会被翻译成 CPU 可以“本机”理解的 asm 代码。
【讨论】:
本机 DLL 一词最初是在托管代码存在之前使用的。它最初旨在引用不是 COM DLL 的 DLL。它旨在引用最初在 Windows 中的 DLL。
请注意,Kev 说过“在 .NET 中也可以创建包含本机二进制代码和托管代码的混合模式 DLL。”但这不相关;这样的 DLL 不是本机 DLL,因为它具有 CLI (.Net) 元数据。此外,混合模式 DLL 只能使用 C++/CLI 开发;没有其他语言支持它。
查看我的文章Native Windows Dynamic Link Libraries (DLLs)了解更多信息。
【讨论】:
据我了解,“本机 DLL”将是一个基本的 Win32 dll。包含非托管代码的 DLL。
使用 .NET,您可以编写托管程序集。这些将调用与非托管应用程序调用相同的基本 Windows 代码。
【讨论】:
快速浏览这些 MSDN 搜索结果将回答您的问题:
http://social.msdn.microsoft.com/Search/en-US?query=define:%20native%20dll&ac=8
这是一个包含机器代码而不是 MSIL 的简单 DLL。
【讨论】: