Numéro d'article: 131313 - Dernière mise à jour: mardi 29 juin 2004 - Version: 2.1 Comment faire pour créer la source ou de bibliothèques d'importation de 32 bits sans .OBJs
SommaireRésuméCet article explique comment créer une bibliothèque d'importation étant donné une .dll pour lequel vous ne disposez d'aucun module de code ou l'objet source. Il n'existe aucun utilitaire 32 bits qui peut créer une bibliothèque d'importation à partir d'une DLL, comme cela était le cas avec les versions 16 bits de Visual C++. Remarque : cette méthode peut ne pas fonctionne avec les DLL générées avec les outils de développement non Microsoft. Plus d'informationsNormalement, lorsque générer une .dll ou n'importe quelle cible qui exporte des fonctions ou des éléments de données, une bibliothèque d'importation (et exporte le fichier) est générée dans le cadre du processus de liaison. Mais, dans le cas de .dll tiers qui n'est pas livré avec une bibliothèque d'importation, il se peut que vous deviez générer une bibliothèque d'importation afin d'utiliser la DLL avec succès à l'aide de liaison dynamique au moment du chargement. Une bibliothèque d'importation n'est pas nécessaire pour la liaison dynamique au moment de l'exécution. Il existe deux façons de créer une bibliothèque d'importation étant donné un .dll :
Création d'un fichier .defLe seul moment où vous pouvez utiliser un fichier .def pour créer une bibliothèque d'importation à partir d'une DLL pour laquelle vous n'avez pas le code source ou objet modules est que si la DLL exporte des fonctions par le biais d'une interface de C. Plus précisément, les fonctions doivent avoir été déclaré pour utiliser la convention d'appel C. Cela est spécifié par l'attribut _cdecl normalement utilisé dans le prototype pour la fonction. Notez que si aucun attribut n'est spécifié, _cdecl est la valeur par défaut lorsque /GZ (_stdcall est la valeur par défaut) ou /GR (_fastcall est la valeur par défaut) n'est pas spécifié sur la ligne de commande CL. La raison de cette limitation est basée sur une hypothèse effectuée par l'utilitaire LIB que tous les noms sont automatiquement exportées sans un trait de soulignement de début. Ceci est vrai pour les noms de fonction _cdecl uniquement.Étant donné un .dll avec les fonctions exportées par le biais d'une interface C, vous pouvez créer une bibliothèque d'importation en procédant comme suit :
Stubbing out fonctionsPour des fonctions exportées qui utilisent des conventions d'appel autre que C, la situation est un peu plus complexe. Ceci est particulièrement vrai lorsque vous envisagez fonctions C++ et les jeux de décoration de nom plus complexes impliqués. Pour utiliser cette méthode, vous devez disposer au moins le fichier d'en-tête qui décrit l'interface de la DLL.Pour créer des fonctions stub à partir de prototypes dans un fichier d'en-tête :
ExempleSi le fichier d'en-tête qui décrit MYDLL.DLL ressemble à:CL /c /Ob0 mydll.CPP Remarque : Désactiver la fonctionnalité inline est requise pour forcer la génération de symboles pour les fonctions définies dans CMyClass. Si la fonction inline était activée, le compilateur aurait Notez qu'il n'y a aucune référence aux fonctions membres dans l'unité de traduction, donc il, vous ignorez les corps de fonction. Consultez la discussion sur l'expansion de la fonction inline sous optimisations dans la référence de ligne de commandes de CL Visual C++. Une fois que vous avez des fichiers .obj, vous pouvez utiliser LIB /DEF : pour créer la bibliothèque d'importation (.lib) et le fichier des exportations (.exp) : LIB /DEF : mydll.OBJ Pour plus d'informations sur la commande LIB, consultez «Référence LIB» dans Visual C++ Books Online. En outre, consultez l'article suivant dans la base de connaissances Microsoft : 140485
(http://support.microsoft.com/kb/140485/EN-US/
)
L'exportation de symboles PASCAL comme dans les DLL 32 bits Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
Traduction automatiqueIMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique. La version anglaise de cet article est la suivante: 131313
(http://support.microsoft.com/kb/131313/en-us/
)
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT. | Autres ressources Autres sites d'aide
CommunautésTraductions disponibles |






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



Retour au début