Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 3.805 pregleda

Najnovija ↓

Importovanje funkcije iz dll-a 27.10.2004. u 23:24 · pre 267 meseci #1
Pozdrav svima.
Nabavio sam nesto sto mi treba, ali je pisano u C++. Srecom postoji dll.
Kod za importovanje funkcije u C++ glasi

Code:

IMPORTED_FN(int) Convert(const char *rtf, const char *html, r2hFlags Flags=0, const char *imgdir="");


i s' tim nema problema, ali kad prevedem na paskalski nece da radi.

Code:

 function Convert(const rtf, html: PChar; Flags: Longint = 0; ImgDir: PChar = ''): Integer; stdcall; external 'r2h.dll' name 'Convert';


da li sam ja lose preveo ili je nesto drugo po sredi, ali mi javlja za ovaj zadji parametar ImgDir gresku Constant expression expected.

Pokusao sam da stavim nil i kad pozovem funkciju iz delphija padne Access Violation greska.

Jel ima neko savet? Hvala unapred
Potpis
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
Re: Importovanje funkcije iz dll-a 28.10.2004. u 01:17 · pre 267 meseci #2
Zar ne treba :
Code:
function Convert(const rtf, html: PChar; Flags: Longint = 0; const ImgDir: PChar = ''): Integer; stdcall; external 'r2h.dll' name 'Convert';
Re: Importovanje funkcije iz dll-a 28.10.2004. u 02:06 · pre 267 meseci #3
ma da, al i sa tim nece. uspeo sam da ga iskompajliram sa ImgDir = nil.
izgleda da nije u tome. taj dll exportuje vise funkcija. i nijedna nece da radi kako treba. ona odradi posao a posle toga pokaze access violation. bas cudno :) a imam program u C++ koji radi sam tim dll-om sasvim ok
Potpis
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
Re: Importovanje funkcije iz dll-a 28.10.2004. u 07:16 · pre 267 meseci #4
A da promenis konvenciju za pozivanje (mislim da se tako zove :)) ??
Umesto stdcall; probaj da stavis cdecl; ili nesto drugo...
Re: Importovanje funkcije iz dll-a 28.10.2004. u 15:20 · pre 267 meseci #5
probao sam i to, nista.
ne verujem da je do toga, jer se obe funkcije izvrse.
tek kada se izlazi iz procedure koja ih je pozvala, npr. Button1Click tada pukne greska. mnogo cudno :)
Potpis
Ride the rainbow, crack the sky

DIY gitare, pojacala i efekti www.diy-fever.com
Re: Importovanje funkcije iz dll-a 28.10.2004. u 16:11 · pre 267 meseci #6
Ovako:
1) posto u onom kodu u C++-u (za import) nije eksplicitno navedena 'calling convention', to znaci da je dll pisan u C-u ili C++-u, pa se napipavaju. Znaci, mi moramo da stavimo cdecl konvenciju za import iz Pascal-a;
2) Dodela default vrednosti parametra PChar NECE raditi u samoj deklaraciji funkcije. Probaj ovako:
Code:

function Convert(const rtf, html: PChar; Flags: Longint = 0; const ImgDir: PChar): Integer; cdecll
; external 'r2h.dll' name 'Convert';


ali pre samog poziva te funkcije moras da deklarises parametar ImgDir:
Code:

  aImgDir := '';
  function Convert(artf, ahtml, aFlags, aImgDir);


Probaj pa javi

Rajko
Re: Importovanje funkcije iz dll-a 28.10.2004. u 19:21 · pre 267 meseci #9
Ako jedan parametar ima default vrednost, svi naredni takodje moraju imati default vrednost.

Zato, probaj da sklonis default vrednost i sa Flags parametra.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme