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