Hukommelse og DLL'er

Tags:    delphi

<< < 12 > >>
Når jeg bruger en funktion i en dll, så erklære jeg den lige efter min uses liste. (Håber det er rigtig, for det virker fint). Men nogle gange når jeg lukker mit program så kommer der fejl i delphi. Hvorfor gør der det, og hvad her jeg gjort galt? Er det måske fordi jeg skal fjerne DLL filen igen fra hukommelsen elelr hvad?

Jeg bruger Delphi 7, og har husket at includere ShareMem de rigtige steder.



11 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Du mangler at eksportere dine funktioner med calling convention tildelt! Desuden vil jeg ikke andefale at at reutrnere en string fra en DLL til din applikation. Du siger godtnok at du bruger ShareMem men det kan helt undgaes ved bare at returnere en PChar! Saa vil den foroverigt ogsaa blive kompatibel med andre sprog end Delphi! :D



Der kan vaere mange aarsager til hvorfor en fejl meddelse dukker op i din situation! Hvad siger fejl meddelsen?

Loader du din DLL ind paa dynamisk vis?
Hvilken procedure og funktioner indgaar i din DLL?

Det behoever strengt taget ikke kun at vaere paa grund af din DLL, maaske er det noget helt andet! Lidt kode eksempler ville kunne hjaelpe os frem til at finde aarsagen!



Funktionen i min DLL er:
Fold kodeboks ind/udKode 


og koden til at definere den i min form ser således ud:
function GetCompiledDate: string; external ('kft_kernel.dll');

og for at bruge den skriver jeg så:
Label1.Caption := ('Compiled den: '+GetCompiledDate);



så det er ikke dynamisk

[Redigeret d. 11/05-04 16:56:32 af Kasper Færch Mikkelsen]



Forovrigt vil jeg ikke mene du kan bruge Application.Exename i en DLL fil! Brug i stedet ParamStr(0)!!!!



Angaaende min kommentar med at man ikke kan bruge Application.Exename i en DLL... det kan man godt, men du vil ikke behoeve at inkludere Forms under uses i din DLL fil hvis du bruger ParamStr(0). Det vil yderligere resultere i en mindre stoerelse af din DLL fil ved ikke at havde saa mange units tilfoejet under uses! :D



Forovrigt vil jeg ikke mene du kan bruge Application.Exename i en DLL fil! Brug i stedet ParamStr(0)!!!!


men når ejg nu gør som du siger så kommer der fejl når jeg compiler:
Incompitable types: string and PAnsiChar.
Hvor dan konvertere jeg lige det?



Har du sat en convention call til dine funktioner i sin DLL, og hvilken en har du benyttet?

Bruger du PChar og ikke PAnsiChar?



Har du sat en convention call til dine funktioner i sin DLL, og hvilken en har du benyttet?

Bruger du PChar og ikke PAnsiChar?


Jeg ved ikke hvad det er du snakker om (er ikke lige en ørn til delphi), men jeg bruger PChar nu, men den delphi skriver: Incompitable types 'String' and 'PAnsiChar'.



Jeg tror at jeg bliver noedt til at se hele dit projekt! Baade din applikation og din DLL!



Jeg tror at jeg bliver noedt til at se hele dit projekt! Baade din applikation og din DLL!



øøøhhhh.... Nej tak. Jeg finder på en anden løsning. Det er et privat projekt.



<< < 12 > >>
t