Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.13;
Скачать: CL | DM;

Вниз

Получение указателя на масиив из dll на Delphi   Найти похожие ветки 

 
zux ©   (2002-04-27 21:47) [0]

Есть длл Написанная а Обжект Паскале
Вот пример экспортной фукнции

type Aint=array of Integer;
type PAint=^Aint;

function Test():PAint;stdcall;
var
asd:Aint;
begin
setLength(Aint,2);
asd[0]:=2;
asd[1]:=4;
Result:=@asd;
end;

теперь в С++
я делаю

typedef int *pint;
typedef pint (_stdcall *FTest)();
FTest Test;
HINSTANCE Main_dll;

Main_dll=LoadLibrary("Main.dll");
Test=FTest(GetProcAddress(Main_dll,"Test"));

pint p;
p=Test();//p-указатель на массив в длл приетом этот указетель
несодержит не каких данных а если и содержит то ето не данные а мусор

а вот если в длл поменять
type Aint=array of Integer; на
type Aint=array[0..2] of Integer;
ТОбиш как только меняем динамический масси на статический все нормально
Подскажите как заставить работать данный пример с динамическим массивом


 
Alx2 ©   (2002-04-29 11:19) [1]

Динамические массивы - вещь специфичная Delphi. C++ не поймет. Делай статикой, либо "стандартными" типами данных, либо расковыривай у Delphi менеджер памяти и смотри как он с динамическими массивами работает. Либо используй свой тип данных со своей поддержкой.


 
Dimk   (2002-04-29 11:39) [2]

Ты возвращаешь из Test указатель на данные в стеке ( asd располагается в стеке! Даже если это динамический массив то в asd содержится указатель на ...). Это классический глюк.
Когда ты вернешься из процедуры - стек очистится asd с высокой вероятностью будет затерт. Сделай asd глобальным.



Страницы: 1 вся ветка

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
14-39859
Кандыль
2002-04-03 17:32
2002.05.13
Где в реестре хранится имя папки...


1-39731
kat
2002-04-27 10:11
2002.05.13
Двоично-десятичные числа


1-39732
Андрей Сенченко
2002-04-27 15:18
2002.05.13
Регистрация горячей клавиши


1-39756
Demon Ltd
2002-04-28 00:44
2002.05.13
Работа с фильтрацией


14-39851
JEff
2002-03-08 16:09
2002.05.13
Изменение Caption а QRDBText а