Suggestions d'utilisation de Delphi pour fabriquer des fichiers multiplexés DLL
Essayez d'utiliser des interfaces DLL standard. Cela signifie que le type de retour de paramètres et la fonction passés ne peut pas être unique à Delphi, tel que la chaîne (ANSistring), ainsi que les tableaux dynamiques et les types composites (tels que les enregistrements) contenant ces types de membres, et ils ne peuvent pas contenir des membres de données de ces types de membres. Si vous utilisez le type de chaîne ou le type de tableau dynamique et que l'appelant n'est pas un programme Delphi, vous signalerez essentiellement une erreur. Une erreur peut également se produire si l'appelant est Delphi, mais l'appelant ou la Callee n'est pas dans la première unité contenant du fichier de projet, qui n'est pas ShareMem.
Si l'appelant est une application Delphi, vous pourrez peut-être utiliser des objets qui ne contiennent pas de membres de données du type interdit (chaîne, tableau dynamique) en paramètres ou en valeurs de retour, mais doivent également être évités autant que possible.
Si l'appelant et la partie appelée sont tous deux des programmes Delphi et doivent utiliser une chaîne ou un tableau dynamique comme paramètres, la première unité d'inclusion du fichier de projet entre les deux parties doit être partagée. (Le programme C ++ Builder peut être le même, mais il n'a pas été testé.)
Si l'appelant n'est pas un programme Delphi, une chaîne, un tableau dynamique, des types de données composés et des instances de classe contenant des chaînes ou des tableaux dynamiques ne peuvent pas être utilisés comme paramètres ou valeurs de retour.
Par conséquent, afin d'améliorer la plage de multiplexage des DLL et d'éviter les erreurs possibles, le type de paramètre standard de l'API standard doit être utilisé. Les tableaux dynamiques sont convertis en type de pointeur (@Array [0]) et ajoutent la longueur du tableau.
Si l'appelant et la fête appelés sont tous deux des programmes Delphi et ne souhaitent pas effectuer la conversion ci-dessus pour la commodité de l'écriture, il est recommandé d'utiliser la forme d'un package d'exécution. Les packages d'exécution peuvent assurer la bonne version de données allouées dynamiquement. De cette façon, en raison de son extension (.BPL), il montre que le fichier est limité à Delphi / C ++ Builder (contrairement à DLL).
Deuxièmement, essayez d'éviter d'utiliser autant que possible les fonctions / processus de surcharge. et des méthodes à Delphi, comme CreateByDefaultFile et Createfault.
Enfin, en tant que fournisseur de DLL, vous devez fournir des fichiers d'interface de programmation directs tels que .pas ou .dcu dans Delphi (de préférence .pas, comme il peut y avoir des commentaires), .h et .lib en C et C ++. Au lieu de laisser les utilisateurs le créer eux-mêmes. Ceci est particulièrement important si vous devez avoir une fonction / processus de surcharge. De plus, en tant qu'application Delphi, le fichier .pas fourni peut être connecté à l'avance (en utilisant externe pour spécifier la fonction de sortie dans la DLL) ou ultérieurement (en utilisant LoadLibrary et GetProcaddress). montre qu'il est formel (ou hiqos) et garanti.