Exporter automatiquement tous les symboles d'une DLL sans macros ni fichiers .def
Dans Visual Studio 2005, vous pouvez exporter tous les symboles d'une DLL sans ajouter manuellement __declspec(dllexport) ni créer de fichiers .def. Ceci est réalisé à travers les étapes suivantes :
Utilisation de CMake (recommandé)
- Installez CMake version 3.3.20150721-g9cd2f ou supérieure, qui inclut l'option "Exporter Fonctionnalité "Tous".
- Ajouter la ligne set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) sur votre fichier CMakeLists.txt.
- Créez un projet Visual Studio à l'aide de CMake.
- Compilez le projet et tous les symboles seront exportés automatiquement.
Remarque : Lorsque vous utilisez cette méthode, assurez-vous que /GL (Whole Optimisation du programme) n'est pas activé.
Analyse des fichiers .obj
- Créez un programme pour analyser les fichiers .obj et extraire les symboles exportés.
- Rassemblez des informations telles que les conventions d'appel, les champs de symboles et les informations externes/statiques. informations.
- Générez un fichier .def avec les symboles extraits.
- Liez la DLL à l'aide du fichier .def.
Bien que cette méthode nécessite un effort supplémentaire, elle offre une flexibilité dans l'analyse des fichiers .obj.
Supplémentaire Conseils
- Utilisez les macros d'exportation __declspec(dllexport) ou __cdecl pour les fonctions C afin d'éliminer la modification des noms.
- Utilisez une bibliothèque statique pour exporter des symboles, puis analysez-les et extrayez-les pour utiliser dans un fichier .def.
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!