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é)
- Installer la dernière version de développement de CMake (cmake-3.3.20150721-g9cd2f-win32-x86.exe ou supérieur).
- Créez un projet CMake avec le Fichier CMakeLists.txt.
- Ajoutez la ligne suivante au fichier CMakeLists.txt :
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
Copier après la connexion
- 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 :
- Créez une bibliothèque statique à partir du code que vous souhaitez exporter.
- Utilisez dumpbin /LINKERMEMBER pour extraire les exportations de la bibliothèque statique.
- Analysez la sortie de dumpbin et créez un fichier .def.
- 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!