Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 201


при неявном линковании, я напишу библиотеку, в которой будет находиться всего одна функция. При обращении к этой функции будет выдаваться окно с сообщением (MessageBox) «Сейчас мы в DLL!». Наверное, трудно при-

думать что-то более простое, а? Приложение, которое будет обращаться к этой библиотеке, всего-навсего будет вызывать эту функцию, не создавая никаких окон, циклов обработки сообщений и т. д. Листинги программы и библиотеки (я назвал ее dll.dll) приведены ниже:

#ifdef_MYDLL_

#define MY API _decispec(dllexport) #e!sc

#define MYAPI _declspec(dllimport)

#endif

MYAPI void CALLBACK MyMessagc();

Листинг № 7. Файл заголовков библиотеки dll.h: ^include <windows.h> #define _MYDLL_

MYAPI void CALLBACK MyMcssageQ {

McssageBox(NULL. "Now we are in DLL!", "Hurray!" , MB_OK); i

Листинг № 8. Основной файл библиотеки dll.cpp:

LIBRARY        MyMessage

DESCRIPTION 'Program'

EXETYPE         WINDOWS

CODE PRELOAD MOVEABLH DISCARDABLE

DATA PRELOAD MOVEABLE SINGLE

Листинг № 9. Файл определения модуля dll.def:

//include <\vindows.h> //include "dll.h"

hit WiNAPI WmMaiufHlNSTANCE hInsiance,HINSTANCE hPrevInstance,

LPSTR Ips/CmdLinc, int nCmdShow)

i

MyMessageQ; return !;

240

241

Листинг №10. Основной файл программы, осуществляющей вызов библиотечной функции, арр.срр посредством неявной компоновки:

NAME МуЛрр

DESCRIPTION 'Program'

EXETYPE         WINDOWS

CODE PRELOAD MOVEABLE DISCARDABLE

DATA PRELOAD MOVEABLE MULTIPLE

Листинг № 11. Файл определения модуля app.def.

Для того чтобы эта связка программа-DLL заработала, проделайте следующие действия:

создайте DLL;

с помощью утилиты IMPLIB создайте lib-файл;

при создании ехе-файла прилинкуйте файл, полученный с помощью implib, к вашей программе;

запустите ехе-файл.

Надеюсь, что после всех этих действий вы увидите на экране сообще­ние о том, что произошло обращение к DLL.

В данном случае при загрузке выполняемого файла система просмат­ривает его для того, чтобы определить, какие DLL используются при его работе, после чего пытается загрузить требующиеся DLL. Поиск DLL осуществляется в следующих каталогах:




Начало  Назад  Вперед



Книжный магазин