Re[3]: Использование DLL в DLL
От: Stanislav V. Zudin Россия  
Дата: 18.01.02 09:31
Оценка:
Здравствуйте Cory, Вы писали:

C>Я навроде уже проблемку поборол. Действительно, в хедере функции и классы объявляются с помощью макроса OEXPORT __declspec(dllexport). Удалив этот макрос из объявлений классов я добился нормальной работы. Но это скучно. Должен заметить, что в своей DLL я использую другой макрос для __declspec(dllexport), а именно DLLEXPORT :-). Это не помогает ну ни капельки. Может, все таки есть модный способ? Например, чего нибудь с директивами препроцессора.


Начало-то правильное. Только нужно подходить к задаче творчески :-).
Итак,

B.dll
файл B_dll.h

// **************************************************************************
//             ОБЪЯВЛЕНИЯ ДЛЯ ИМПОРТА/ЭКСПОРТА КЛАССОВ/ФУНКЦИЙ
#ifdef B_DLL_EXPRT
#  define B_EXP_FUNC __declspec(dllexport)
#else
#  define B_EXP_FUNC __declspec(dllimport)
#endif
// **************************************************************************

//                      ОБЪЯВЛЕНИЯ ТВОИХ ФУНКЦИЙ
B_EXP_FUNC void b_dll_func();


В настройках проекта, либо в глобальном заголовочном файле объяви B_DLL_EXPRT (я предпочитаю первый вариант).

Теперь при использовании B_dll.h файла в проекте "В" функция void b_dll_func() будет экспортироваться, во всех остальных проектах — импортироваться.

Теперь A.dll:

Файл A_dll.h


// **************************************************************************
//             ОБЪЯВЛЕНИЯ ДЛЯ ИМПОРТА/ЭКСПОРТА КЛАССОВ/ФУНКЦИЙ
#ifdef A_DLL_EXPRT
#  define A_EXP_FUNC __declspec(dllexport)
#else
#  define A_EXP_FUNC __declspec(dllimport)
#endif
// **************************************************************************

//                      ОБЪЯВЛЕНИЯ ТВОИХ ФУНКЦИЙ
A_EXP_FUNC void a_dll_func();


Все то же самое — В настройках проекта объявляем A_DLL_EXPRT.

Вот и все.
_____________________
С уважением,
Stanislav V. Zudin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.