Текущий архив: 2004.05.16;
Скачать: CL | DM;
ВнизИспользование DLL из C++ в Delphi Найти похожие ветки
← →
Goida © (2004-04-29 10:22) [0]Каким образом должна быть объявлена экспортируемая функция в DLL, написанном на C++, чтобы эту функцию и библиотеку можно было использовать в Delphi?
← →
Ega23 © (2004-04-29 10:24) [1]Например так:
function PRRead:DWord; StdCall; External "ProxAPI.dll";
function PRSet(Ctrl:DWord;OnOff:DWord):DWord; External "ProxAPI.dll";
Только нужно чётко соглашение о вызовах соблюдать.
← →
Goida © (2004-04-29 10:35) [2]Нет, мне нужно объявление на C++. Или разницы, в общем, нет?
← →
Ega23 © (2004-04-29 10:37) [3]Ты же в Делфи собираешься использовать?
← →
Андрей Сенченко © (2004-04-29 10:39) [4]Ega23 © (29.04.04 10:37) [3]
Соглашение о вызовах в любом случае придется прописывать и там и там. Или я не прав ?
← →
Ega23 © (2004-04-29 10:42) [5]Соглашение о вызовах в любом случае придется прописывать и там и там. Или я не прав ?
Я о том и говорю, что нужно чётко соглашение о вызовах соблюдать.
← →
Goida © (2004-04-29 10:46) [6]Т.е. как объявленно в C++ не важно?
← →
Юрий Зотов © (2004-04-29 11:25) [7]> Goida © (29.04.04 10:46) [6]
Откройте справку и посмотрите, как объявлены функции API. Это и есть правильные сишные объявления функций в DLL, которые запросто можно вызывать и из Delphi, и вообще из чего угодно.
Как вызывать их из Delphi - см. кучу примеров в Windows.pas. Сопоставьте объявление функции в справке с ее декларацией в Windows.pas - сразу все поймете.
← →
Goida © (2004-04-29 11:34) [8]
> Юрий Зотов
Спасибо.
← →
Григорьев Антон (2004-04-29 12:51) [9]Только не забудьте указать для функции при описании на C++, что она extern "C", а то будет декорация имени.
← →
Goida © (2004-04-29 12:57) [10]
> Григорьев Антон
> будет декорация имени
Это что такое?
← →
Григорьев Антон (2004-04-29 13:17) [11]Декорация имён - это когда имя, под которым функция реально экспортируется, отличается от того, под которым она объявлена. Это характерно для C++. Например, функция SomeFunc может превратиться во что-то вроде __SomeFunc@43@334_34 - так компилятору удобнее.
← →
PVOzerski © (2004-04-29 13:26) [12]Опасность декорации имен (вот, значит, как по-русски будет name mangling :^) ) более актуальна при статической линковке, а не при работе с dll, так как во 2-м случае, есть возможность объявить алиас имени ( procedure proc;external "dll.dll" name "_proc_???FFF$$$@@@!@#DD" )или использовать вообще для вызова ее ординал (индекс).
← →
Goida © (2004-04-29 13:29) [13]Уф бр-р...
Страницы: 1 вся ветка
Текущий архив: 2004.05.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.043 c