2010-01-29 4 views
4

Я очень смущен этой терминологией. Мне абсолютно не нравится слово export в контексте dll. Причина только в том, что я не понимаю, что это такое. Я не знаю, где искать.Что означает `dll exporting/importing`?

Используется во многих случаях.

  • Экспорт из таблицы экспорта DLL
  • из разделяемой библиотеки
  • функции, экспортируемые DLL.

Может любой пояснить. Что это значит? Как в любом другом контексте, как меняется его смысл? Что такое таблица экспорта? Это как .text/.bss/.data раздел (ы) в файле PE/ELF?

Почему я не слышал об dll import? Если такая вещь существует. Когда он используется. Если его не слишком много, простой пример также будет большим.

Просьба уточнить, и я прошу всех использовать простую терминологию. Я уже смущен.

+0

Фактически, C# P/Invoke использует атрибут '[DllImport]' для отметки сигнатур функций как импортированных из данной DLL. –

ответ

4

Функция экспортирована из dll, когда она подвержена другим программам для использования. Таблица экспорта dll - это список раскрываемых функций и адреса, по которым они доступны. Как правило, dll содержит некоторые функции, которые экспортируются для общедоступного потребления, и другие функции, которые не экспортируются, - они не могут быть вызваны другими dll или программами, используя обычные методы, но их можно вызвать внутри dll.

Вы не часто говорите о «dll import», поскольку импорт dll не является одним процессом. Когда вы ссылаетесь на dll, каждая функция, экспортируемая этой DLL, становится доступной для вашей DLL, но для того, чтобы ссылаться на dll, вам обычно нужен файл .h, который дает вам декларации, и файл .lib, который предоставляет заглушку указатели на экспортируемые функции. Эти две вещи вместе составляют dll импорт. Однако с помощью функций LoadLibrary и GetProcAddress можно использовать функции dll без эквивалента, что эквивалентно POSIX dlopen и dlsym).

+0

'Таблица экспорта DLL - это список раскрываемых функций и адреса, в которых они доступны.' Разве это не называется таблицей символов? – monster

+0

Таблица экспорта - это подмножество таблицы символов. Полная таблица символов, например, используемая для отладки, будет включать внутренние функции, имена переменных и другие объекты, которые не экспортируются. –

+0

И таблица экспорта - это конкретная поддерживаемая OS функция двоичного изображения, которая позволяет связывать время исполнения. Таким образом, это очень специфический тип таблицы символов. –

Смежные вопросы