2009-08-23 5 views
3

J'ai un projet makefile qui construit et relie une DLL, en utilisant le compilateur cl.exe en ligne de commande, qui est inclus dans l'outil VC++ Express (gratuit). Je veux maintenant convertir ce projet makefile dans un projet Visual Studio.Dans un projet VC++ dans Visual Studio, comment spécifier/EXPORTER des symboles?

La DLL n'est pas réellement C++; tout est écrit en C.

La DLL exporte un petit nombre de symboles, fonctions qui sont appelées par d'autres programmes liés à la DLL. Je crois que pour produire cette DLL, j'ai besoin d'inclure une instruction /EXPORT:Foo sur la ligne de commande de lien, pour chaque symbole exporté.

Comment faire la même chose dans Visual Studio 2008? Comment puis-je spécifier les options de l'éditeur de liens pour exporter un petit ensemble spécifique de fonctions de la DLL?

Répondre

3

Vous devrez utiliser les "Options supplémentaires" dans la propriété "Ligne de commande" de l'éditeur de liens et ajouter les options explicitement.

Je pense que la plupart des gens utilisent les attributs __declspec(dllexport) ainsi que des macros pour le rendre plus utilisable et pour faire de la declspec une version dllimport dans les en-têtes pour les clients de la bibliothèque.

1

Je ne vois pas d'option GUI pour cela, donc vous pouvez simplement l'ajouter manuellement sous la ligne de commande sous Linker dans les propriétés du projet. Je pense que la plupart des gens utilisent un fichier DEF pour cela.

4

Voir les deux premiers paragraphes de Exporting from a DLL, qui dit,

Vous pouvez exporter les fonctions d'une DLL en utilisant deux méthodes:

Créer une définition de module (.def) fichier et l'utilisation le fichier .def lors de la construction la DLL. Utilisez cette approche si vous souhaitez que exporte les fonctions de votre DLL par ordinale plutôt que par nom.

Utilisez le mot-clé __declspec (dllexport) dans la définition de la fonction.

2

ou vous pouvez essayer:

cl /LD hellodll.cpp /link /EXPORT:func01 /EXPORT:func01 

pour les fonctions qui ne sont pas spécifié par "_declspec(dllexport)"

+0

droit, mais la question était de savoir comment faire dans Visual Studio, pas comment le faire sur la ligne de commande. En fait, dans ma question, j'ai même déclaré que je pouvais le faire en ligne de commande avec l'option '/ EXPORT'. – Cheeso

Questions connexes