[Решено] Передача в dll типа string

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

[Решено] Передача в dll типа string

Сообщение NTFS » 15.04.2012 20:03:07

День добрый.

Не могу вернуть из dll строку string.

Обращение к такой функции не работает (пример упрощен):

procedure myproc(var s:string) ; stdcall ; export ;
begin
s:='abc' ;
end ;

неизбежно приводит к Access Violation

если убираю var, то все ок, но строка не возращается, как и ожидалось.

При использовании PChar все нормально.

fpc 2.4.2, Win32

И библиотека, и главная программа на fpc.
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

Re: Передача в dll типа string

Сообщение Максим » 15.04.2012 20:13:59

Это нормально. Пользуйтесь PChar.
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Передача в dll типа string

Сообщение NTFS » 15.04.2012 20:16:16

Это НЕнормально. Компилятор ведь один и то же, значит, должен передавать ЛЮБЫЕ типы в библиотеку и обратно. Ладно, в древних версиях Delphi была эта проблема, но уж FPC должен ее побороть?
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

Re: Передача в dll типа string

Сообщение Mr.Smart » 15.04.2012 20:25:40

NTFS Компилятор то один, а менеджеры памяти разные...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Передача в dll типа string

Сообщение NTFS » 15.04.2012 20:29:30

Решение? Не хочется использовать PChar.
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

Re: Передача в dll типа string

Сообщение Mr.Smart » 15.04.2012 20:31:13

Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Передача в dll типа string

Сообщение Максим » 15.04.2012 20:32:43

NTFS
Эта тема здесь, на форуме, обсуждалась миллион раз. Нельзя же быть таким ленивым. :evil:
search.php?keywords=string+%D0%B2+DLL
Аватара пользователя
Максим
энтузиаст
 
Сообщения: 598
Зарегистрирован: 27.07.2007 01:51:43
Откуда: Москва

Re: Передача в dll типа string

Сообщение NTFS » 15.04.2012 20:37:35

Блин, я думал, что языки высокого уровня (и их компиляторы) эту проблему решили лет так 10 назад :-)

Спасибо за помощь.
NTFS
постоялец
 
Сообщения: 388
Зарегистрирован: 05.11.2007 14:57:50
Откуда: Краснодар

Re: Передача в dll типа string

Сообщение Maxizar » 15.04.2012 21:12:51

можно просто вписать модуль cmem (для совсем ленивых) :)
http://wiki.freepascal.org/Lazarus/FPC_Libraries/ru

Пример
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru