
Глава 10: Особенности MapBasic всреде Microsoft Windows
222 MapBasic Руководство пользователя
Объявление и использование динамических библиотек 
(DLL)
Динамические библиотеки Windows (Dynamic Link Library, DLL) – это 
файлы, содержащие выполняемые процедуры и другие ресурсы. Вы 
можете использовать DLLфайл как библиотеку внешних процедур и 
обращаться к ним из программы MapBasic с помощью оператора  Call.
Многие DLLбиблиотеки поставляются вместе с программами, а также 
отдельно. Каждая обычно снабжается документацией, описывающей 
процедуры и их параметры. Для того, чтобы можно было вызывать 
DLLпроцедуру из Вашей MapBasicпрограммы, Вы должны объявить 
ее оператором Declare так же, как и собственные процедуры. В 
операторе Declare Вы объявляете имя DLLфайла, имя процедуры и 
описываете ее параметры. Предложение Alias позволяет, если нужно, 
переименовать DLLпроцедуру для избежания конфликтов с уже 
существующими в программе именами.
Вы можете вызвать DLLфункцию так же, как и собственную функцию 
MapBasic, объявив ее сначала c помощью оператора Declare Function и 
затем обращаясь к ней из текста. (См. в Справочнике MapBasic 
описание операторов Declare Sub и Declare Function.) DLLфайл 
должен быть доступен программе во время ее работы.
Подробно строение DLLфайлов описано в документации к Windows 
Software Developer's Kit (SDK), а также в книгах независимых авторов.
Объявление внешней библиотеки 
Предложение Lib libname в операторе Declare сообщает MapBasic, где 
находится динамическая библиотека "libname". Среда Windows 
содержит несколько стандартных библиотек, входящих в состав 
системы. Вы можете в качестве параметра libname объявить “User”, 
“GDI”, “Kernel” или любую из стандартных DLLбиблиотек Windows. 
При объявлении других DLLбиблиотек параметр libname должен 
включать в себя DOSмаршрут:
Declare Sub mydll Lib "C:\dlls\mydll.dll" (ByVal x 
As Integer, 
    ByVal y As Integer)
Если явно задать DOSмаршрут в операторе Declare (например, 
“C:\LIB\MYLIB.DLL”), MapInfo постарается загрузить именно этот 
DLLфайл. Если этого файла там нет, то MapInfo его не загрузит, что 
повлечет ошибку.
Если оператор Declare не задает явного пути к DDLбиблиотеке, то 
MapInfo будет искать его по следующим правилам:
1. Если DLL находится в том же каталоге, что и MBXфайл, то 
MapInfo загружает DLL, иначе