Maison > développement back-end > C++ > le corps du texte

Comment puis-je exporter tous les symboles d'une DLL dans CMake sans les définir manuellement ?

Linda Hamilton
Libérer: 2024-11-24 16:21:28
original
506 Les gens l'ont consulté

How Can I Export All Symbols from a DLL in CMake Without Manually Defining Them?

Comment exporter tous les symboles lors de la création d'une DLL

Dans Visual Studio 2005, exporter tous les symboles d'une DLL sans ajouter manuellement __declspec(dllexport) ni créer de fichiers .def pose un défi. Heureusement, cela peut désormais être réalisé avec la dernière version de CMake (cmake-3.3.20150721-g9cd2f-win32-x86.exe ou supérieure).

Réponse courte

Pour exporter automatiquement tous les symboles dans une DLL, définissez CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS sur ON dans votre CMake projet :

set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
Copier après la connexion

Réponse longue

1. Exporter des symboles à l'aide de __declspec(dllexport)

  • Ajouter __declspec(dllexport) aux classes et méthodes à exporter.
  • Exporter en tant que fonctions C à l'aide d'un "C" externe si vous utilisez un C compilateur pour exporter les fonctions C.

2. Créez un fichier de définition de module (.def)

  • Exportez les fonctions C en ajoutant des déclarations de fonction dans le fichier .def.
  • Exportez des symboles à partir d'une bibliothèque statique à l'aide de dumpbin/LINKERMEMBER pour analyser la sortie et créer un fichier .def.
  • Exportez les symboles à partir de fichiers .obj à l'aide CMake :

    • Utilisez set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) dans votre projet CMake.
    • CMake extraira les symboles des fichiers .obj et créera un fichier .def dynamiquement lors de l'événement Pre-Link.

Sans CMake :

  • Analyser manuellement les fichiers .obj pour extraire les symboles et créer un fichier .def.

Remarque : Désactiver l'optimisation de l'ensemble du programme (/GL) lors de l'utilisation de la méthode CMake pour exporter des symboles.

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