Для проверки работоспособности полученного на предыдущем шаге
приложения можно использовать отладчик TD32.EXE. Кстати, когда вы
будете в нем работать, обратите внимание на то, как происходит переход
из DLL-библиотеки на код в процедуре. Вы увидите, что помощь в этом
оказывает неизвестно откуда появившаяся команда JMP. Причину этого вы
можете выяснить, прочитав раздел «Секция описания импортируемых функций
РЕ-файла» главы «Форматы исполняемых файлов» книги.
При разработке DLL-библиотек естественным образом возникает
вопрос о совместимости с приложениями, разработанными на других языках.
Это тем более актуально, если речь идет о продуктах разных
фирм-производителей программного обеспечения. Проверить, насколько
совместима разработанная нами с помощью средств TASM DLL-библиотека,
можно с помощью утилиты DumpBin.exe из пакета Microsoft Visual Studio.
Запустите ее командной строкой вида:
DUMPBIN.EXE -exports maketjJll.DLL>p.txt
Тогда в файле p.txt вы получите отчет о содержимом
раздела экспорта DLL-библиотеки maket_dll.dll. Проанализировав
полученные результаты, вы убедитесь, что проблем с распознаванием нашей
DLL-библиотеки у этого программного средства фирмы Microsoft не
возникло. Это дает основание полагать, что данную библиотеку при
соответствующем наполнении полезными функциями можно использовать при
программировании на VisualC/C++, VisualBasic и т. п. При этом необходимо
иметь в виду, что может иметь место искажение имен функций при
использовании компиляторов различных фирм. Подробнее об этом можно
узнать в соответствующей литературе.
Не следует забывать, что на практике возможны три формы загрузки
DLL-библиотеки в адресное пространство процесса: неявная, явная и
отложенная. Описанный выше способ сборки приложения на самом деле был
неявным и предполагал, что загрузка DLL-библиотеки производится при
запуске самого приложения. Явный способ загрузки DLL-библиотеки
предполагает ее загрузку во время работы приложения. Для этого в Win32
API существуют специальные функции:
HINSTANCE LoadLibraryC LPCTSTR lpLibFileName ):
HMODULE LoadLibraryExtLPCTSTR lpLibFileName,HANDLE hF1le, DWORD dwFlags):
Третий способ загрузки DLL-библиотек — отложенная загрузка. Этот вид загрузки предполагает, что DLL-библиотека не будет загружена в адресное пространство процесса до тех пор, пока приложению не потребуется осуществить доступ к любому экспортируемому из этой DLL-библиотеки объекту (переменной, константе, процедуре). Подробнее об этом и других вопросах разработки и использования DLL-библиотек можно прочитать в литературе.