Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

Загрузка 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 вся ветка

Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.039 c
11-1093533393
Владимир
2004-08-26 19:16
2005.03.27
StretchDraw


9-1104950702
Бульдозер
2005-01-05 21:45
2005.03.27
Опять коллизии


1-1110788735
Я1
2005-03-14 11:25
2005.03.27
TreeView.Items.Clear - Access violation


14-1109943182
mrAld
2005-03-04 16:33
2005.03.27
Регистрация Web-сервиса на IIS .net


1-1110441679
shadowonline
2005-03-10 11:01
2005.03.27
Присвоение OnClientRead обработчика





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский