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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Diman
Постоянный гость
Сообщения: 56
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Волгоград Филиал ОАО "Связьтранснефть" НВ ПТУС отдел ОИТ

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

Сообщение 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.
Juve
Постоянный гость
Сообщения: 60
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва
Контактная информация:

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

Сообщение Juve »

Сам не пробовал, но что-то тут писали про то что название функции должно быть объявлено обязательно БОЛЬШИМИ буквами.
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

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

Сообщение Max_Fin »

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

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

через класс сразу предупреждаю - не выйдет.
Жду выхода Вселенная 2.12!
Diman
Постоянный гость
Сообщения: 56
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Волгоград Филиал ОАО "Связьтранснефть" НВ ПТУС отдел ОИТ

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

Сообщение Diman »

Писали название функции и большими и маленькими буквами, не помогает.

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