Вниз
Скачать: CL | DM;

Загрузка C шной DLL из Delphi   Найти похожие ветки 

 
naum   (2005-03-17 10:10) [0]

Есть проблема 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 10:42) [1]

прошу прощение, там разобрались, переделали на 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);
...

?


 
palva1   (2005-03-17 11:03) [2]

Неправильно.
std::string это объект STL, которого нет в библиотеках Delphi. Наверно, можно как-нибудь извратиться на Delphi, но на вашем месте я бы перешел на C-Builder. Либо выкатил претензии к авторам библиотеки. Писать DLL с использованием STL с неизбежностью означает возможность использования этой DLL только из той же системы программирования и с тем же вариантом STL.


 
KSergey ©   (2005-03-17 11:13) [3]

Вообще-т palva1   уже все сказал, но позволю себе выплеснуть эмоции.

Прикольные сишники вам попались :) Них.. не секут :)

Не думал, что среди сишников есть такие... Что первый пост "кроме наших ++ нет ничего", что второй "мы только про stl знаем".

Как говорится - смените поставщика.

> но на вашем месте я бы перешел на C-Builder.
> DLL только из той же системы программирования и с тем же
> вариантом STL.

Вот в чем и штука! А ведь кроме C-Builder есть еще и другие С++ компиляторы ;) На чем те ребята изголялись - хрен знает... (ну разве что вы опознали по искажению имен именно билдер...)


 
naum   (2005-03-17 11:45) [4]

на что можно проще всего заменить std::string товарищам? вам, господа, огромное спасибо за разъяснение ситуации.


 
naum   (2005-03-17 12:16) [5]

ветку можно закрывать! огромное спасибо еще раз KSergey & palva1



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.029 c
4-1108131235
NikNet
2005-02-11 17:13
2005.03.27
Как мне узнать имя процесса по его Handel Я использую PSAPI.DLL


9-1104047468
.dn
2004-12-26 10:51
2005.03.27
Миникарта


4-1108466729
AbramovVi
2005-02-15 14:25
2005.03.27
извлеч финкции из dll


9-1104704810
Trip
2005-01-03 01:26
2005.03.27
Потестируйте мой скринсэйвер на GLScene ?


1-1110880022
Muk
2005-03-15 12:47
2005.03.27
Программно нажать клавишу




   Наверх