我想知道.NET dll和普通dll之间的确切区别。第一个问题是,“普通”DLL被称为什么?我使用“normal”这个词,但似乎不太对?
因为两者都遵循PE格式。是的,我同意.NET DLL有一个额外的部分。除此之外其他方面都是相同的。
我还知道,在.NET中,代码被转换为CIL / MSIL,那么填充在PE文件的.text部分中的是什么?MSIL?因为没有二进制代码。但如果他们将MSIL放在.text部分。加载器会认为它是二进制代码并允许其执行。但事实并非如此。我错过了什么吗?
我很惊讶知道:
即使DLL文件扩展名是人为的。您可以使用完全不同的扩展名来创建DLL - 例如OCX控件和控制面板应用程序(.CPL文件)都是DLL。
还有哪些扩展名可用于DLL文件?
但我可以理解为什么要使用不同的扩展名。为什么在.NET DLL的情况下没有这样做?他们本可以使用新扩展名来将其与“正常”的DLL区分开来。他们甚至为.NET中的DLL使用了不同的名称(ASSEMBLY
),但没能更改扩展名。哎?
另一个完全不同的问题:什么是DLL注册?他们使用regsvr32.exe进行注册。对吧?我在安装Windows XP SP3后注意到它。在安装后,在重启Windows之前,我检查了启动列表,并发现了许多带有许多DLL的regsvr32.exe
条目。
请随意深入研究。我正在学习有关链接器、加载器和二进制格式的知识。我熟悉PE文件格式。