![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
likenix |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 13.10.2008 Репутация: нет Всего: нет |
Всем привет!
Не получается передать параметры из Delphi в библиотеку написанную на C++. Код программы:
Код программы на Delphi:
Функция test_func_lib всегда возвращает 2. |
||||
|
|||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Почему то мне кажется, что у Delphi по умолчанию тип вызова __fastcall, и он распространяется и на вызываемую из dll функцию. А у нее прописан __stdcall
|
|||
|
||||
likenix |
|
||||||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 13.10.2008 Репутация: нет Всего: нет |
>Почему то мне кажется, что у Delphi по умолчанию тип вызова __fastcall, и он распространяется и на вызываемую из dll функцию. А у нее прописан __stdcall
Сейчас подумаю Убрал __stdcall
и добавил cdecl
Спасло отца демократии) [size="1"][color="grey"]Добавлено через 4 минуты[/color][/size] почемуто если
в Delphi
Функцию не находит Если кто знает подскажите плиз. Добавлено через 12 минут и 2 секунды >Почему то мне кажется, что у Delphi по умолчанию тип вызова __fastcall, и он распространяется и на вызываемую из dll функцию. А у нее прописан __stdcall Да ты прав, но
почемутто
функцию не находит( Может плохо искал или не там) |
||||||||||||||
|
|||||||||||||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Декорирование имен. Из нее получается нечто вроде test_func_lib@8 (может еще с подчеркиванием в начале)
|
|||
|
||||
likenix |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 13.10.2008 Репутация: нет Всего: нет |
xvr, и как правильно вызывать такую функцию? Как угадать название?)
|
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Посмотреть что получилось прямо в DLL, или задать ей принудительно нормальное имя при сборке DLL через DEF файл Это сообщение отредактировал(а) xvr - 22.10.2009, 18:27 |
|||
|
||||
just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 2 Всего: 10 |
xvr, не будет декорирования имен при extern "C"
Давным-давно, для программы на делфи писал плагин. У меня было так...
По умолчанию, соглашение вызова - __cdecl и все отлично работало... |
|||
|
||||
xvr |
|
||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Имеется в виду не С++ декорирование, а Win32 декорирование. Оно будет. From MSDN about __stdcall:
|
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |