当我在StackOverflow上阅读有关DLL的文章时,我偶尔会遇到“Native DLLs”这个词。我发现了有关它们的问题,但我无法理解“Native DLL”究竟是什么。
什么是本机DLL?
答案 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。