![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Загрузка C'шной DLL из Delphi [D7]
naum © (2005-03-17 10:10:00)Есть проблема subj. Короче я в Сях ровным счетом ни бум-бум. Есть контора в которой написали для нашего приложения модуль. Но экспортируемые функции там обернули так, что я теперь разобраться не могу. Во-первых: имена функций выглядят приблизительно так (за вместо "avls_connect") - "?avls_connect@@YAXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H00@Z"
как им обернуть ее правильно надо, чтобы я мог ее вызвать? Я уже пробовал, по приведенному имени в dll нахожу адрес этой функции (все находится нормально), но там и с вызовом проблема возникает. Может у кого мысли есть?
naum (2005-03-17 12:16:00) [1]ветку можно закрывать! огромное спасибо еще раз KSergey & palva1
naum (2005-03-17 11:45:00) [2]на что можно проще всего заменить std::string товарищам? вам, господа, огромное спасибо за разъяснение ситуации.
KSergey (2005-03-17 11:13:00) [3]Вообще-т palva1 уже все сказал, но позволю себе выплеснуть эмоции.
Прикольные сишники вам попались :) Них.. не секут :)
Не думал, что среди сишников есть такие... Что первый пост "кроме наших ++ нет ничего", что второй "мы только про stl знаем".
Как говорится - смените поставщика.
> но на вашем месте я бы перешел на C-Builder.
> DLL только из той же системы программирования и с тем же
> вариантом STL.
Вот в чем и штука! А ведь кроме C-Builder есть еще и другие С++ компиляторы ;) На чем те ребята изголялись - хрен знает... (ну разве что вы опознали по искажению имен именно билдер...)
palva1 (2005-03-17 11:03:00) [4]Неправильно.
std::string это объект STL, которого нет в библиотеках Delphi. Наверно, можно как-нибудь извратиться на Delphi, но на вашем месте я бы перешел на C-Builder. Либо выкатил претензии к авторам библиотеки. Писать DLL с использованием STL с неизбежностью означает возможность использования этой DLL только из той же системы программирования и с тем же вариантом STL.
naum (2005-03-17 10:42:00) [5]прошу прощение, там разобрались, переделали на definition. тут еще вопрос встал :) в Си прототип выглядит так:
void avls_connect( const std::string& ip, int port, const std::string& login, const std::string& password )
правильно ли я сообразил его на Delphi:
procedure avls_connect(const ip: PChar; port: Integer; const login: PChar; const password: PChar); external 'avls_dll.dll';
где перед вызовом:
procedure Connect(IP,Login,Password: String; Port: Integer);
...
pIP,pLogin,pPassword: PChar;
...
GetMem(pIP,Length(IP)+1); StrPCopy(pIP,IP);
GetMem(pLogin,Length(Login)+1); StrPCopy(pLogin,Login);
GetMem(pPassword,Length(Password)+1);StrPCopy(pPassword,Password);
avls_connect(pIP,Port,pLogin,pPassword);
...
?