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
Prochaine révision
Révision précédente
prog:lazarus:cas:dll:dll [17/03/2023 17:16]
thierry [Sharemem]
prog:lazarus:cas:dll:dll [18/03/2023 18:42] (Version actuelle)
thierry [Partage d'object entre DLL et EXE]
Ligne 8: Ligne 8:
  
 ===== Partage d'​object entre DLL et EXE ===== ===== Partage d'​object entre DLL et EXE =====
-Apparement ​ce n'est pas possible/​conseillé+Apparemment ​ce n'est pas possible/​conseillé 
 + 
 +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 ======
Ligne 15: Ligne 68:
   * [[https://​wiki.freepascal.org/​Lazarus/​FPC_Libraries]]   * [[https://​wiki.freepascal.org/​Lazarus/​FPC_Libraries]]
   * [[https://​wiki.freepascal.org/​shared_library]]   * [[https://​wiki.freepascal.org/​shared_library]]
 +  * [[https://​delphi.developpez.com/​faq/?​page=DLL#​Comment-partager-un-objet-entre-un-executable-exe-et-une-DLL]]
 +  * [[https://​www.developpez.net/​forums/​d355094/​environnements-developpement/​delphi/​placer-tform-tframe-cree-dll/​]]