Maison > développement back-end > C++ > Comment puis-je exporter automatiquement tous les symboles d'une DLL dans Visual Studio sans utiliser de fichiers __declspec(dllexport) ou .def ?

Comment puis-je exporter automatiquement tous les symboles d'une DLL dans Visual Studio sans utiliser de fichiers __declspec(dllexport) ou .def ?

Patricia Arquette
Libérer: 2024-12-06 02:19:10
original
628 Les gens l'ont consulté

How Can I Automatically Export All Symbols from a DLL in Visual Studio without Using __declspec(dllexport) or .def Files?

Exportation automatique de symboles pour les DLL sans déclarations explicites

Dans Visual Studio 2005, vous pouvez exporter automatiquement tous les symboles d'une DLL sans ajouter manuellement __declspec (dllexport) ou création de fichiers .def. Voici comment :

Utiliser CMake (recommandé)

  1. Installer la dernière version de développement de CMake (cmake-3.3.20150721-g9cd2f-win32-x86.exe ou supérieur).
  2. Créez un projet CMake avec le Fichier CMakeLists.txt.
  3. Ajoutez la ligne suivante au fichier CMakeLists.txt :
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
Copier après la connexion
  1. Générez le projet Visual Studio à l'aide de CMake (cmake-gui) et compiler.

Avantages :

  • Cette méthode ne nécessite aucune macro d'exportation explicite dans les classes ou les fonctions.
  • Elle élimine le besoin de création manuelle de .def fichiers.

Remarque : L'optimisation du programme complet (/GL) ne peut pas être utilisée avec cette approche.

Création d'un fichier .def avec des informations sur le fichier objet

Comme alternative à l'approche CMake, vous pouvez créer un fichier .def manuellement en utilisant ce qui suit étapes :

  1. Créez une bibliothèque statique à partir du code que vous souhaitez exporter.
  2. Utilisez dumpbin /LINKERMEMBER pour extraire les exportations de la bibliothèque statique.
  3. Analysez la sortie de dumpbin et créez un fichier .def.
  4. Liez la DLL à l'aide du .def fichier.

Avantages :

  • Permet un contrôle plus fin sur l'exportation des symboles.

Inconvénients :

  • Nécessite la création manuelle d'une bibliothèque statique, dumpbin analyse syntaxique et écriture de fichiers .def.
  • Peut ne pas être aussi efficace que l'approche CMake.

Conseils supplémentaires :

  • Si vous utilisez l'approche d'exportation de classe, ajoutez __declspec(dllexport) ou extern "C" __declspec(dllexport) à la classe ou à la méthode déclaration.
  • Envisagez d'utiliser %2 au lieu de __cdecl dans le fichier .def pour la compatibilité avec les anciennes versions de Windows.
  • Assurez-vous que les paramètres de modification du nom sont cohérents entre le code et le fichier .def (si créé manuellement).

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal