Здравствуйте 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.
Вот и все.