[ 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]
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.