Fermez le projet de bibliothèque (fichier-> fermer tout) et créez une nouvelle application console (fichier-> nouveau-> autres + sélectionnez “application console”). Une fois qu`ils sont redéclarés comme externes, les fonctions de la DLL peuvent être utilisées comme s`il s`agissait de fonctions locales. Cette directive a peu à voir avec Delphi elle-même; elle s`applique à C + + Builder. Mais si vous ne savez pas ce que les compilateurs des deux côtés utilisent réellement, vous pouvez obtenir des effets très particuliers. Si vous n`êtes pas sûr des noms réels des fonctions exportées par la DLL, vous pouvez utiliser le programme de ligne de commande TDump de Borland, disponible dans le dossier Delphi BIN, à l`aide du commutateur de ligne de commande-EE. Toujours rien? Dans la programmation Delphi, il est courant d`utiliser des dll écrites en C ou C++. Oh? Wtf? Borland Memory Manager) ainsi que le programme et la bibliothèque spécifique. Les quelques lignes suivantes montreront comment créer une DLL simple à l`aide de Delphi. Compilez et exécutez-le.

Essayons maintenant de passer une chaîne réelle, pas une constante de chaîne. Mais c`est une fonction qui peut être appelée à partir de n`importe quel programme Windows qui veut le faire. Points d`entrée») pour les autres exécutables à appeler. Pour utiliser cette DLL C++, j`ai créé un exemple Delphi nommé CallCpp. Bien sûr, dans un fichier DLL plus complexe, nous n`ajouterons pas tout le code à la source du projet, mais à des unités, mais nous voulons garder les choses simples ici. Le nouveau projet est donc appelé « Cette énorme différence de taille souligne le fait que vous ne devez pas surutiliser les dll dans Delphi, pour éviter de compiler le code VCL dans plusieurs fichiers exécutables. Compilez et exécutez votre programme. Vous savez ce que la fonction length fait, n`est-ce pas? Bien sûr, les paquets peuvent contenir aussi des routines simples, des constantes, des variables, etc. Par exemple, pour exprimer des valeurs de couleur, vous devez utiliser des entiers ou le type Windows ColorRef au lieu du type natif TColor de Delphi, en effectuant les conversions appropriées (comme dans l`exemple FormDLL, décrit dans la section suivante). Oui, ce n`est pas très excitant, n`est-ce pas? Par exemple-dans DependencyWalker pour Kernel32.

Les noms internes des deux premières fonctions correspondent à leurs noms dans le fichier de code source C++. Encore une fois, remarquez quelque chose? Vous n`avez pas techniquement passer une chaîne, mais à toutes fins pratiques que vous avez fait. Dans le code source final de l`exemple FirstDll, j`ai modifié légèrement le code de la version répertoriée ici, pour afficher un message chaque fois qu`une fonction est appelée. Par exemple, j`ai écrit une DLL en C++ avec quelques fonctions triviales, juste pour vous montrer comment appeler des dll à partir d`une application Delphi. Dans cette version de base de la DLL, vous n`avez pas besoin d`une instruction uses; mais en général, le fichier principal du projet comprend uniquement les déclarations d`utilisation et d`exportation, tandis que les déclarations de fonction sont placées dans une unité distincte. Ne jamais retourner les types de données simples comme entier, double ou simple, sinon vous aurez très probablement se retrouver avec un fichier DLL que vous ne pouvez utiliser à partir d`une application Delphi (et même ce sera une douleur majeure dans le bas du dos pour se rendre au travail). Vous trouverez une copie sur son site Web, www. Delphi vous permet de déclarer les tableaux et les enregistrements comme emballés, ce qui signifie qu`aucun alignement n`a lieu, mais d`autres langages de programmation ou compilateurs peuvent ne pas avoir ce concept.