Bonjour !
J'ai une unité que j'ai voulu transformer en DLL et apparemment je m'y suis mal pris puisque le programme utilisant la DLL cesse de fonctionner au moment de se fermer. (Plus exactement, l'une des deux versions de ce programme, l'autre paraissant fonctionner normalement.) La fonction appelée reçoit comme paramètre une chaîne (entre autres) et renvoie une chaîne. J'ai fait quelques recherches sur le sujet et j'ai cru comprendre que c'est de là que venait le problème, mais je n'ai pas trouvé d'exemple qui colle exactement à mon cas.
Je voudrais, si possible, que ma DLL soit également compilable et utilisable avec Free Pascal. Pourriez-vous me mettre sur la voie de la solution la plus universelle, c'est-à-dire qui puisse fonctionner avec différents compilateurs, et éventuellement même me permettre d'utiliser ma DLL depuis un programme en C (si possible).
Voici l'en-tête de ma fonction. Je mets dans une pièce jointe tous les autres fichiers, y compris le résultat de mes essais avec différents compilateurs (Delphi 7, Delphi XE2, Free Pascal). Pour résumer, le chargement statique (j'espère ne pas dire de bêtise) fonctionne. C'est avec le chargement dynamique que l'erreur se produit. Par contre, avec Free Pascal, les deux versions plantent en cours de route. Mais si j'utilise directement l'unité qui est "derrière" la DLL, tout fonctionne correctement avec les trois compilateurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 library Matador; {$IFDEF FPC}{$MODE DELPHI}{$ENDIF} {$WARN SYMBOL_PLATFORM OFF} uses SysUtils, MatadorCore; function SolveMate( const aFen: string; const aMovesNumber: integer; const aSearchAllMoves: boolean ): string; export;
Partager