2009-03-10 7 views
2

Je crée un projet DLL C++ simple à l'aide de Visual Studio 2008 Express Edition. J'ai quelques classes à l'intérieur d'un espace de noms, et quelques fonctions non statiques et les constructeurs à l'intérieur sont déclarés avec __declspec(dllexport). Toutes ces fonctions sont implémentées. J'ai également une fonction extern "C" BOOL APIENTRY DllMain qui renvoie simplement TRUE. Lorsque j'appuie sur Déboguer (ou sur Libérer), il se construit avec succès sans erreurs ni avertissements. Le dossier de sortie ("Debug /" ou "Release /") obtient des fichiers tels que "BuildLog.htm", un fichier ".obj" par fichier source, "vc90.pdb", "vc90.idb", "[ DLLNAME] .dll.embed.manifest "," [DLLNAME] .dll.embed.manifest.res "," [DLLNAME] .dll.intermediate.manifest "mais ... pas la DLL elle-même. C'est la première fois que j'essaie de compiler ce projet (donc je n'ai jamais réussi à le compiler auparavant) et j'ai peu d'expérience avec C++/DLL, bien que je connaisse le C++ autonome et les objets partagés Linux C créés auparavant.Création de DLL C++ avec Visual Studio

Qu'est-ce que je fais mal? Y a-t-il un fichier requis particulier qui me manque?

Répondre

8

Je chercherais un peu plus haut dans la structure de répertoire (celle dans laquelle se trouve la solution) et je verrais si vos dossiers Debug/Release (avec la DLL) sont là. Je pense que la valeur par défaut consiste à placer les DLL dans les dossiers du répertoire de la solution, pas dans le répertoire du projet (je suppose que vous voulez que toutes les DLL que vous construisez pour une solution se retrouvent au même endroit)

+0

Merci beaucoup! Je ne m'attendais jamais à être là. Aucune langue dans le passé ne l'a fait, donc c'était complètement inattendu pour moi ... – luiscubal

+0

@luiscubal: Pas de problème:] (Vous n'êtes certainement pas la première personne à qui cela est arrivé!) –

1

Faites un clic droit sur <ProjectsName> dans Solution Explorer View, sélectionnez Properties, allez à Configuration Properties > General onglet et vérifier le champ Output Directory. Le chemin peut être constitué de quelques macros comme $(SolutionDir)$(ConfigurationName) etc. Cliquez dessus, sélectionnez Edit puis, lorsqu'une fenêtre apparaît, choisissez Macros pour voir ce qu'ils signifient réellement, par exemple. quel répertoire SolutionDir correspond à. Vous pouvez déduire le chemin de la sortie dll à partir de là.

Questions connexes