Bonjour,
J'essaie actuellement de faire une DLL pour mettre en commun le code de diverses applications. Mais voilà que je rencontre un problème. M'est avis que cela est du au fait que je ne comprend pas bien comment se fait le linkage mais bon, voici.
Voici le code de ma DLL qui marche
Aucun problème, dans un programme je fais :
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 library malib; uses FastShareMem in 'FastShareMem.pas', SysUtils, Classes; {$R *.res} const DLL_VERSION = '0.1'; function getVersion: string; stdcall; begin Result:= DLL_VERSION; end; exports getVersion; begin end.
et quand j'appelle getVersion tout marche comme je l'attendais, ie, je récupère le numéro de version.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 function getVersion: string; stdcall; external 'malib.dll';
Passons au problème, comme j'ai d'autres fonctions et que je déteste tout mettre dans un seul fichier, je décide de mettre ma fonction dans une autre unité.
si maintenant mon fichier principal prend cette forme :
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 unit libfunctions; interface uses SysUtils; function getVersion: string; stdcall; implementation function getVersion: string; stdcall; export; begin Result:= DLL_VERSION; end; end.
Et bien dans le programme final lorsque que j'appelle getVersion, le programme se bloque, mon utilisation processeur passe à 100%, et je suis obligé de sauvagement killer le tout.
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 library malib; uses FastShareMem in 'FastShareMem.pas', SysUtils, Classes, libfunctions in 'libfunction.pas'; {$R *.res} exports getVersion; begin end.
Voilà, si quelqu'un a une idée. Dans un premier temps, je pourrais tout mettre dans mon fichier principal, mais je trouve ça goret :/
Merci par avance
Starch'[/b][/code]
Partager