Maison > développement back-end > C++ > CMake peut-il exporter automatiquement tous les symboles lors de la création d'une DLL dans Visual Studio ?

CMake peut-il exporter automatiquement tous les symboles lors de la création d'une DLL dans Visual Studio ?

Susan Sarandon
Libérer: 2024-11-27 07:54:09
original
415 Les gens l'ont consulté

Can CMake Automatically Export All Symbols When Building a DLL in Visual Studio?

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

Scénario

Dans Visual Studio 2005, le but est d'exporter automatiquement tous les symboles lors de la création d'une DLL, sans ajouter manuellement d'annotations __declspec(dllexport) ni créer de fichiers .def. Est-ce possible ?

Solution avec CMake

Réponse :Oui, vous pouvez y parvenir avec les dernières versions de CMake (à partir de la version 3.3.20150721-g9cd2f-win32- x86.exe et versions ultérieures). Cette fonctionnalité est actuellement dans la branche de développement et sera intégrée dans les futures versions.

Étapes :

  1. Obtenez CMake :Télécharger la version de développement de CMake à partir du lien fourni.
  2. Créer un projet CMake : Configurer votre projet pour utiliser CMake basé sur un fichier CMakeLists.txt.
  3. Activer l'exportation de symboles : Ajoutez la ligne suivante à votre fichier CMakeLists.txt :

    set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
    Copier après la connexion
  4. Build Project : Créez un projet Visual Studio à l'aide de CMake (cmake-gui) et compilez

Remarque : Cette approche nécessite de désactiver l'optimisation du programme entier (/GL) lors de la compilation.

Autres approches

1. Utilisez __declspec(dllexport) :

Ajoutez manuellement __declspec(dllexport) ou __declspec(dllimport) avant les définitions de classe ou de fonction pour exporter ou importer explicitement des symboles.

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

Écrivez un fichier .def qui contient des déclarations de fonction ou exporte des symboles à partir d'une bibliothèque statique.

Avantages de la solution CMake

  • Exportation automatique de tous les symboles sans annotations manuelles ni fichiers .def.
  • Multiplateforme compatibilité grâce à la capacité de CMake à générer des scripts de build pour différentes plates-formes.
  • Simplifie le processus de construction, éliminant le besoin d'intervention manuelle.

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