Bonjour,
Il semble que la directive sdtcall provoque des erreurs quand on crée un DLL.
Peut-être qu'il faut changer le type de paramètres ?
exemple :
fonctionne très bienFunction CreateFichier(Nom : string):Boolean;export;
mais
génère une erreur quand l'exécutable appelant ferme. J'ai même tenté un type Pchar pour le paramètre.Function CreateFichier(Nom : string):Boolean;stdcall;export;
Si je veux que VB (ou autre) utilise ma DLL il me faut stdcall pour compatibilité non ?







Répondre avec citation





, il faut que tu alloue et libère tes chaînes que d'un seul côté, comme ça se fait dans l'API Windows, ou c'est très souvent l'exe qui passe en paramètre un buffer avec sa taille. Le buffer est ensuite rempli par la dll, et c'est l'exe qui se chargerat de la libération du buffer à un moment ou à un autre.Dans ces cas là, on utilise effectivement un PChar comme signalé plus haut, mais on passe les arguments ByVal. Avec Un String ByRef, on passerait plutôt un pointeur sur un pointeur sur la chaine. Alors que notre PChar est un pointeur sur la chaîne.
Partager