[ masetrt @ 20.02.2006. 12:16 ] @
Imam c++ dll koji poseduje f-ju koja izgleda ovako:

Code:
RASTER_API unsigned char* GetImageFromRasterInstance(void *instance , int &imageWidth , int &imageHeight);


tj f-ja vraca niz bajtova. Medjutim nikako ne mogu da importujem tu funkciju tako da mogu da je koristim iz Delphi koda. Stvar je u tome da se dimenzije niza koga funkcija vraca kreiraju unutar funkcije.

Ovako sam importovao f-ju u delphi:

Code:
function GetImageFromRasterInstance(instance: Pointer;
                                    var imageWidth: Integer;
                                    var imageHeight: Integer): Pointer cdecl  {$IFDEF WIN32} stdcall {$ENDIF};


Osim tipa (za povratnu vrednost funkcije) Pointer probao sam i TByteArray , PByteArray , array of byte , Variant ali nista nije pomoglo jednostavno cim je funkcija ubacena u kod program puca. Da li neko ima neku ideju kako bi moglo ovo da se sredi? Hvala unapred
[ Rapaic Rajko @ 20.02.2006. 14:14 ] @
Nisi bio precizan; sta znaci "cim se funkcija ubaci u kod, program puca"?
Cim startujes program, ili kad pokusas da izvrsis funkciju? Daj neki kod/text greske.
Kako si importovao funkciju, staticki ili dinamicki?

Rajko
[ mligor @ 20.02.2006. 14:23 ] @
meni to smrdi na pogresan calling convension. Proveri kako je tacno definisan RASTER_API i da li u delphiu imas definisan WIN32.
[ masetrt @ 20.02.2006. 14:26 ] @
Program je pucao kada se pokrene aplikacija, znaci pre poziva funkcije. Funkcije su linkovane staticki ne dinamicki. Greska je bila u tome shto u definisanju funkcije u c++ kodu nije bilo extern "C" posle ubacivanja toga sve je OK. RASTER_API je bio definisan sa:
#define RASTER_API __declspec(dllexport). Bash glupo sto to nisam naveo, ali hvala vam u svakom slucaju

[Ovu poruku je menjao masetrt dana 20.02.2006. u 15:33 GMT+1]