Я хочу знать, каковы точные различия между .NET dll и обычной dll.
Первый вопрос, как называется "нормальная DLL"? Я использую слово «нормальный». Но это не кажется правильным?
Потому что оба следуют формату PE. Да, я согласен с тем, что в .NET DLL есть дополнительный раздел. В остальном все то же самое.
Я также знаю, что в .NET код конвертируется в CIL / MSIL, тогда что заполняется в разделе .text PE файла? MSIL? потому что нет двоичного кода. Но если они поместят MSIL в раздел .text. Загрузчик предполагает, что это двоичный код, и разрешает его выполнение. Но это не так. Что мне не хватает?
Я удивлен, узнав, что
Даже расширение файла DLL является искусственным. У вас могут быть библиотеки DLL с совершенно разными расширениями - например, элементы управления .OCX и апплеты панели управления (файлы .CPL) являются библиотеками DLL.
Какие еще расширения используются для файлов DLL?
Но я могу понять причину использования разных расширений. Почему они не сделали то же самое в случае .NET DLLS? они могли бы использовать новое расширение, чтобы отличить его от «обычной» DLL. У них даже есть другое имя (ASSEMBLY
) для dll в .NET, но они не могут изменить расширение. Хм?
Еще один совершенно другой вопрос: что такое регистрация DLL? они используют для этого regsvr32.exe. правильно? Я это заметил, когда установил Windows XP SP3. После установки и перед перезапуском Windows я проверил список автозагрузки и обнаружил много regsvr32.exe
записей с большим количеством DLL.
Пожалуйста, не стесняйтесь погружаться в любую глубину, какую захотите. Я изучаю линкеры, загрузчики, бинарные форматы. Я также знаком с форматом файлов PE.