Главная страница
    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.042 c
14-1110019398
Хинь
2005-03-05 13:43
2005.03.27
Эмуляция Drag n Drop


1-1110380588
Вован_
2005-03-09 18:03
2005.03.27
Как убрать назойливый динь.wav при выходе из TEdit?


1-1110393435
Tirex
2005-03-09 21:37
2005.03.27
принудительное использование другого шрифта всей программой


14-1109705873
Petr V. Abramov
2005-03-01 22:37
2005.03.27
Нужно ли России членство


4-1108454861
Morf
2005-02-15 11:07
2005.03.27
Как найти значение в памяти любого приложения?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский