[Решено] Передача в dll типа string
Модератор: Модераторы
-
NTFS
- постоялец
- Сообщения: 388
- Зарегистрирован: 05.11.2007 13:57:50
- Откуда: Краснодар
- Контактная информация:
[Решено] Передача в dll типа string
День добрый.
Не могу вернуть из dll строку string.
Обращение к такой функции не работает (пример упрощен):
procedure myproc(var s:string) ; stdcall ; export ;
begin
s:='abc' ;
end ;
неизбежно приводит к Access Violation
если убираю var, то все ок, но строка не возращается, как и ожидалось.
При использовании PChar все нормально.
fpc 2.4.2, Win32
И библиотека, и главная программа на fpc.
Не могу вернуть из dll строку string.
Обращение к такой функции не работает (пример упрощен):
procedure myproc(var s:string) ; stdcall ; export ;
begin
s:='abc' ;
end ;
неизбежно приводит к Access Violation
если убираю var, то все ок, но строка не возращается, как и ожидалось.
При использовании PChar все нормально.
fpc 2.4.2, Win32
И библиотека, и главная программа на fpc.
Это нормально. Пользуйтесь PChar.
NTFS Компилятор то один, а менеджеры памяти разные...
NTFS
Эта тема здесь, на форуме, обсуждалась миллион раз. Нельзя же быть таким ленивым.
search.php?keywords=string+%D0%B2+DLL
Эта тема здесь, на форуме, обсуждалась миллион раз. Нельзя же быть таким ленивым.
search.php?keywords=string+%D0%B2+DLL
можно просто вписать модуль cmem (для совсем ленивых) 
http://wiki.freepascal.org/Lazarus/FPC_Libraries/ru
Пример
http://wiki.freepascal.org/Lazarus/FPC_Libraries/ru
Пример
