Bon voila, J'essaie de passer une procedure de mon programme Delphi à une DLL (que j'ai crée)
voici quelques extraits du code :
1) la DLL :
2) le programme Delphi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Library Lib1; var DrawFunc : Procedure; procedure SetDrawFunc( P : Proc) ; begin DrawFunc:=P; end; ...
Le problème survient à la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 interface ... type Proc = Procedure; procedure SetDrawFunc( P : Proc);external 'Lib1.dll'; ... implementation procedure draw; begin ... // effectue les taches de dessin ( en OpenGL si vous êtes curieux ) end; procedure init; begin ... SetDrawFunc(draw); (* ***xxx*** *) <-- c'est la ou ca bloque ! ... end;
SetDrawFunc(draw); (* ***xxx*** *) <-- c'est la ou ca bloque !
Delphi me balance un 'Project1.exe ... Access Violation : Read of address 0000000 ...' Vous connaissez la chanson.
Quelqu'un pourrait me dépanner ? j'arrive pas à comprendre l'origine de ce problème,
d'autant que la DLL et la procedure SetDrawFunc se chargent correctement ( j'ai essayé la méthode load-time linking ( loadLibrary) et j'ai vérifié les addresses : pas de nil).
Merci d'avance.
P.S -1 : C'est bien dans le forum Delphi que je dois poster ce message, où à celui de l'OpenGL ?
P.S -2 : Vite SVP, ce genre de problèmes à la X-Files me donnent l'envie de laisse tomber
Delphi et la programmation pour aller jouer Quake III pendant des heures !
Partager