Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
prog:lazarus:cas:dll:dll [18/03/2023 18:29]
thierry [Sources & Ressources]
prog:lazarus:cas:dll:dll [18/03/2023 18:42] (Version actuelle)
thierry [Partage d'object entre DLL et EXE]
Ligne 11: Ligne 11:
  
 Certain préconise d'​utiliser des [[prog:​lazarus:​cas:​interfaces|Interfaces]] pour résoudre ce problème. Certain préconise d'​utiliser des [[prog:​lazarus:​cas:​interfaces|Interfaces]] pour résoudre ce problème.
 +
 +
 +===== Qu'en dit ChatGPT ? =====
 +
 +J'ai posé la question : "Je programme avec Free Pascal, peut on partager un objet entre un exe et une dll" à ChatGPT, voici sa réponse.
 +
 +Oui, il est possible de partager des objets entre un programme exécutable et une bibliothèque dynamique (DLL) dans Free Pascal. Voici quelques étapes générales que vous pouvez suivre pour le faire :
 +
 +Créez votre objet et compilez-le en tant que bibliothèque dynamique (DLL) en utilisant la commande "​{$MODE OBJFPC}"​ et "​{$H+}"​ pour activer les gestionnaires de mémoire partagée.
 +
 +Exportez les symboles de l'​objet en utilisant la directive "​exports"​ pour que les programmes utilisant la DLL puissent accéder aux objets. Par exemple :
 +
 +<code delphi>
 +library MyObject;
 +
 +uses
 +  MyObjectUnit;​
 +
 +{$MODE OBJFPC}
 +{$H+}
 +
 +exports
 +  MyObjectFunction;​
 +
 +begin
 +end.
 +</​code>​
 +Dans votre programme exécutable,​ incluez l'​interface de l'​objet en utilisant la directive "​external"​. Par exemple :
 +<code delphi>
 +program MyProgram;
 +
 +uses
 +  MyObjectUnit;​
 +
 +{$MODE OBJFPC}
 +{$H+}
 +
 +var
 +  MyObject: TObject;
 +
 +external '​MyObject.dll';​
 +
 +begin
 +  MyObject := TObject.Create;​
 +  // Utilisez l'​objet MyObject ici
 +end.
 +</​code>​
 +Compilez votre programme exécutable en utilisant la bibliothèque dynamique (DLL) que vous avez créée dans l'​étape 1.
 +Il est important de noter que lorsque vous partagez des objets entre un programme exécutable et une DLL, vous devez faire attention à la gestion de la mémoire partagée. Vous devrez peut-être utiliser des fonctions spéciales pour allouer et libérer la mémoire partagée afin d'​éviter des problèmes de corruption de mémoire ou de fuite de mémoire.
 +
 +Personnellement je pense que c'est du bullshit, mais je met ce texte ici pour l'​analyser ultérieurement...
  
 ====== Sources & Ressources ====== ====== Sources & Ressources ======