В Галактике пишу:
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.
Как передать строку в функцию dll
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный гость
- Сообщения: 60
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Как передать строку в функцию dll
Сам не пробовал, но что-то тут писали про то что название функции должно быть объявлено обязательно БОЛЬШИМИ буквами.
-
- На пенсии
- Сообщения: 797
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: г. Тюмень
- Контактная информация:
Re: Как передать строку в функцию dll
Я писал, что строка "ПАСКАЛЕВСКАЯ". Пробуйте сконструивать паскалевкую строку.
0 байт - длина строки
затем идет сама строка длиной заданной в 0 байте.
через класс сразу предупреждаю - не выйдет.
0 байт - длина строки
затем идет сама строка длиной заданной в 0 байте.
через класс сразу предупреждаю - не выйдет.
Жду выхода Вселенная 2.12!
-
- Постоянный гость
- Сообщения: 56
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Волгоград Филиал ОАО "Связьтранснефть" НВ ПТУС отдел ОИТ
Re: Как передать строку в функцию dll
Писали название функции и большими и маленькими буквами, не помогает.
В том то и проблема что строка паскалевская, и Си ее не понимает. Я передаю в функцию написанную на Си (функция "лежит" в DLLельке) строку из ВИПа, передается полная хрень.
В том то и проблема что строка паскалевская, и Си ее не понимает. Я передаю в функцию написанную на Си (функция "лежит" в DLLельке) строку из ВИПа, передается полная хрень.