Функции в DLL
Утилита IMPDEF создает редактируемый исходный файл, который
перечисляет все экспортные функции в DLL. Вы можете отредактировать этот файл .DEF так, чтобы он содержал только те функции, которые вы хотите сделать доступными для нужной прикладной программы, а затем выполнить IMPLIB для отредактированного файла .DEF. В
результате получается библиотека импорта, которая содержит информацию импорта для заданного подмножества экспортируемых функций
DLL.
Например, пусть вы определяете DLL, которая предоставляет
функции для использования различными прикладными программами.
Каждая экспортируемая функция в DLL определяется с помощью оператора _exрort. Теперь, если все прикладные программы используют
все экспортируемые функции DLL, вы можете просто использовать
IMPLIB для создания одной библиотеки импорта для DLL и поставлять
эту библиотеку импорта с DLL. Библиотека импорта может быть скомпонована с любыми прикладными программами, исключая таким образом
необходимость перечисления для каждой прикладной программы каждой
используемой ей функции DLL в секции IMPORT файла определения модуля.
Теперь, пусть нужно передать некоторую часть экспортируемых
функций DLL отдельной прикладной программе. В идеале требуется
скомпоновать специальную библиотеку импорта с этой прикладной
программой - библиотеку импорта, которая предоставляет только
подмножество функций, которые будут использоваться прикладной
программой. Все другие экспортируемые функции в DLL для клиентной
прикладной программы должны быть скрыты.
Для создания библиотеки импорта, которая удовлетворяет этим
условиям, выполните IMPDEF для откомпилированной и скомпонованной
DLL. Утилита IMPDEF создаст файл определения модуля, который содержит в секции EXPORT перечисление всех экспортируемых функций
DLL. Вы можете редактировать этот файл определения модуля, удаляя
компоненты секции EXPORTS для тех функций, которые вы не хотите
включать в библиотеку импорта. После того, как вы удалите ненужные экспортируемые функции, выполните утилиту IMPLIB для файла
определения модуля. Результатом будет библиотека импорта, которая
содержит информацию импорта только для экспортных функций, перечисленных в секции EXPORTS файла определения модуля.