什么是本机DLL?

什么是本机DLL?,dll,native,Dll,Native,当我在StackOverflow上阅读有关DLL的文章时,我多次接触到“原生DLL”这个词。我发现了一些关于它们的问题,但我无法理解“本机DLL”实际上是什么 什么是本机DLL?据我所知,“本机DLL”将是一个基本的Win32 DLL。包含非托管代码的DLL 使用.NET编写托管程序集。这些将调用与非托管应用程序调用相同的基本级别Windows代码。本机DLL通常是包含原始处理器直接可执行代码(如Win32 API中的可执行代码)的DLL,而不是托管(MSIL)其中包含由运行时(如.NET CL

当我在StackOverflow上阅读有关DLL的文章时,我多次接触到“原生DLL”这个词。我发现了一些关于它们的问题,但我无法理解“本机DLL”实际上是什么

什么是本机DLL?

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


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

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


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

当来自.NET程序集的托管代码被发明时,这个术语就出现了,以区分托管代码和非托管代码=本机代码。
每个.net程序集在执行期间都会被JIT编译器“nativied”。这意味着它将被转换为CPU“本机”可理解的asm代码。

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


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

本机DLL这个术语最初是在托管代码存在之前使用的。它最初是指不是COM DLL的DLL。它最初是指类似于Windows中的DLL

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


有关详细信息,请参阅我的文章。

它们被称为“本机”,因为它们包含的代码对于系统的处理器来说是“本机”的,不需要翻译。@bevan-这不是我刚才说的吗?我想您忽略了“本机”是相对于托管DLL的系统的。重读后,也许我错了。有趣的是,你链接的目标显示了这篇文章作为头号匹配。这种无休止的递归可能导致。。。堆栈溢出;-)