什么是原生DLL?

时间:2010-10-22 09:36:11

标签: dll native

当我在StackOverflow上阅读有关DLL的文章时,我偶尔会遇到“Native DLLs”这个词。我发现了有关它们的问题,但我无法理解“Native DLL”究竟是什么。

什么是本机DLL?

5 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:3)

术语本机DLL最初在托管代码存在之前使用。它最初的目的是引用不是COM DLL的DLL。它旨在引用像Windows最初的DLL。

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

有关详情,请参阅我的文章Native Windows Dynamic Link Libraries (DLLs)

答案 3 :(得分:2)

据我所知,“Native DLL”将是一个基本的Win32 DLL。包含非托管代码的DLL。

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

答案 4 :(得分:2)

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

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

包含机器代码的DLL很简单,而不是MSIL。