Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятки с dll / 6 сообщений из 6, страница 1 из 1
09.03.2006, 14:08
    #33589878
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с dll
Написал на C++ Builder 5 dll
Пишу клиента
LoadLibrery загружает длл нормально
Initialize=GetProcAddress(hLib,"Initialize");
возвращает NULL
вот как она обьявлена в длл
extern "C" __declspec(dllexport) BOOL Initialize();
вот как указатель обьявлен в клиенте:
typedef BOOL __stdcall(*TInitialize)(void);

В чем могут быть грабли?

C ув. Tors
...
Рейтинг: 0 / 0
09.03.2006, 14:10
    #33589891
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с dll
Посмотри каким-нибудь софтом, какие функции экспортирует твоя ДЛЛ.
У тебя там скорее всего _Initialize - причуды компилятора
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
09.03.2006, 14:31
    #33589977
tors
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с dll
Функция в длл:
extern "C" __declspec(dllexport) BOOL GetCompressorsCount(PINT Count);
в кленте:
typedef BOOL (__stdcall *TGetCompressorsCount)(PINT);
TGetCompressorsCount GetCompressorsCount;
GetCompressorsCount=GetProcAddress(hLib,"_GetCompressorsCount");

Билдер пишет:
can not convert
int (__stdcall*)() to int (__stdcall*)(int*)

????
C ув. Tors
...
Рейтинг: 0 / 0
09.03.2006, 15:08
    #33590113
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с dll
torsНаписал на C++ Builder 5 dll
Пишу клиента
LoadLibrery загружает длл нормально
Initialize=GetProcAddress(hLib,"Initialize");
возвращает NULL
вот как она обьявлена в длл
extern "C" __declspec(dllexport) BOOL Initialize();
вот как указатель обьявлен в клиенте:
typedef BOOL __stdcall(*TInitialize)(void);

В чем могут быть грабли?

C ув. Tors

def файл прописал?

LIBRARY "<имя библиотеки>.DLL"

EXPORTS
Initialize @1
...
Рейтинг: 0 / 0
09.03.2006, 15:22
    #33590159
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с dll
Надо писать
Initialize=GetProcAddress(hLib,"_Initialize");

Имя функции , объявленной как extern "C", всегда начинается с подчеркивания.

Если не хочешь, чтобы это происходило, можно объявить функцию как FORTRAN. Но правда еще кое-что поменяется.
...
Рейтинг: 0 / 0
10.03.2006, 19:16
    #33593794
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Непонятки с dll
MasterZivЕсли не хочешь, чтобы это происходило....
Если не хочешь чтобы это происходило, надо в def файле прописать переименование функции:
Код: plaintext
1.
EXPORTS 
    Initialize = _Initialize
Это будет работать для всех трансляторов.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Непонятки с dll / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]