Страница 1 из 1

Как передать строку в функцию dll

Добавлено: 15 апр 2005, 13:35
Diman
В Галактике пишу:
function MessageFromGal(string):integer; external 'project1.dll';

в ВИПе вызываю функцию передавая строку
...
lastwin:='12345';
MessageFromGal(string(lastwin));
...

В CИ пишу
extern "C" int __pascal __export MessageFromGal (char *test)

Пробую вывести test на экран, получаю пустую строку. Пробовал в СИ в параметрах функции писать String, AnsiString, Гал-ка вообще падает.

Если кто-то знает как передать в функцию описанную в DLL строку из Галактики, помогите PLZ.

Re: Как передать строку в функцию dll

Добавлено: 15 апр 2005, 13:40
Juve
Сам не пробовал, но что-то тут писали про то что название функции должно быть объявлено обязательно БОЛЬШИМИ буквами.

Re: Как передать строку в функцию dll

Добавлено: 15 апр 2005, 14:07
Max_Fin
Я писал, что строка "ПАСКАЛЕВСКАЯ". Пробуйте сконструивать паскалевкую строку.

0 байт - длина строки
затем идет сама строка длиной заданной в 0 байте.

через класс сразу предупреждаю - не выйдет.

Re: Как передать строку в функцию dll

Добавлено: 25 апр 2005, 13:43
Diman
Писали название функции и большими и маленькими буквами, не помогает.

В том то и проблема что строка паскалевская, и Си ее не понимает. Я передаю в функцию написанную на Си (функция "лежит" в DLLельке) строку из ВИПа, передается полная хрень.