Как DLL может иметь нулевой экспорт? - PullRequest
6 голосов
/ 30 января 2010

Я недавно натолкнулся на DLL, установленную в моей системе, которая, как говорит Dependancy Walker (и каждая другая утилита, которую я пробовал), имеет нулевой экспорт по имени или порядковому номеру, но размер файла составляет приблизительно 4 МБ. Я думал, что единственная цель DLL состоит в том, чтобы экспортировать функции для использования другим кодом, так что бы было целью DLL без видимого экспорта?

Ответы [ 2 ]

4 голосов
/ 30 января 2010

Один из способов представить DLL - это контейнер для функций. Экспорт функции из DLL делает эти функции видимыми для вызывающих сторон вне DLL. Хотя экспорт функций из DLL является, пожалуй, наиболее распространенным способом предоставления доступа к ним, многие платформы предоставляют другие способы доступа к функциям, которые не были экспортированы, например, отражение в .NET Framework и Java и (я думаю) LoadLibtary / GetProcAddress в Win32

Причины этого различны, часто потому, что для разработчика полезно иметь функции в библиотеке, но нежелательно, чтобы эти функции вызывались из внешних приложений

3 голосов
/ 30 января 2010

DLL только для ресурсов, может быть? Например, они часто используются в целях локализации.

РЕДАКТИРОВАТЬ: также возможно иметь DLL с кодом, который делает что-то в DllMain (), чтобы как-то сделать его функциональность доступной. Например, DLL может зарегистрироваться в каком-либо глобальном диспетчере или создать именованные объекты ядра ...

...