Отладка DLL

Вопросы программирования и использования среды Lazarus.

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

Re: Отладка DLL

Сообщение MysticCoder » 24.02.2016 00:22:11

в коде Dll замени
Код: Выделить всё
procedure GetData(Data: TDwordArray);

на
Код: Выделить всё
procedure GetData(Data: TDwordArray); export;


ну и объявление экспорта из dll сделай:

Код: Выделить всё
exports
GetData name 'GetData';


в коде программы поставь var перед Data:
Код: Выделить всё
procedure GetData(var Data: TDwordArray); external 'MyDll.dll';
MysticCoder
постоялец
 
Сообщения: 154
Зарегистрирован: 14.09.2013 00:20:28

Re: Отладка DLL

Сообщение SSerge » 24.02.2016 05:47:27

Alex. S писал(а):Частичный код DLL:

Код: Выделить всё
...
TDWordArray = array of Cardinal;
...
procedure GetData(var Data: TDWordArray);
begin
//
SetLength(Data, 1);
//
Data[0]:=5;
end;




Запрещено передавать между dll и основной программой динамические структуры со счетчиком ссылок, aka (1) динамические массивы, (2) строки и (3) объекты без дополнительных действий, объединяющих менеджеры памяти основной программы и dll. И хоть что заделай, программа будет крашиться, искажать данные и вести себя странно. И то, что позволено в дельфи, здесь не прокатит. :D
SSerge
энтузиаст
 
Сообщения: 971
Зарегистрирован: 12.01.2012 05:34:14
Откуда: Барнаул

Re: Отладка DLL

Сообщение Sharfik » 24.02.2016 21:01:40

SSerge писал(а):(3) объекты без дополнительных действий

Это что?
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 809
Зарегистрирован: 20.07.2013 01:04:30

Re: Отладка DLL

Сообщение zub » 24.02.2016 22:49:25

имеется ввиду
(1) динамические массивы, (2) строки и (3) объекты

и
без дополнительных действий, объединяющих менеджеры памяти основной программы и dll

Про это уже много копий сломано. ждем... ждем пакетов
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Пред.

Вернуться в Lazarus

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

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

Рейтинг@Mail.ru