2010-10-16 4 views
34

J'ai hérité d'une quantité importante de code, y compris un projet de studio visuel qui est supposé (du mieux que je sache) générer un fichier .lib. Visual Studio indique "... Générer du code ... Créer une bibliothèque ... Créer un fichier d'informations de navigation ...", et à la fin, il indique que la construction a réussi. Dans le dossier release/debug, il y a un tas de fichiers .obj, mais il n'a pas de fichier .lib. Que pourrais-je manquer?Build Succeeded, mais aucun fichier .lib n'est créé

Merci!

Répondre

47

Ouvrez les Propriétés du projet (cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions, sélectionnez 'Propriétés'). Sous "Librarian", cochez "Output File" - c'est là que la sortie devrait aller.

Si cela semble correct, essayez dir /s *.lib dans un sous-répertoire approprié pour votre projet, pour voir si vous pouvez localiser la bibliothèque de sortie par date et heure. Si vous ne pouvez toujours pas le trouver, essayez une reconstruction propre (clic droit sur le projet, sélectionnez «Reconstruire»).

Pour les DLL, un fichier .Lib n'est pas créé si la DLL n'exporte rien pour une utilisation externe. Je ne pense pas que cela s'applique aux builds de bibliothèques statiques, mais je m'assurerais que vous exportez quelque chose de public à partir du code source de votre projet de bibliothèque.

+1

Awesomeness. Je ne sais pas ce que je ferais sans vous les gars! Oui, le problème était dans Librarian, le développeur précédent avait codé en dur le chemin de son répertoire personnel. Des gens stupides. – Jim

+16

"Pour les DLL, un fichier .Lib n'est pas créé si la DLL n'exporte rien pour un usage externe." - C'était mon problème. J'ai perdu mon fichier .lib en reconfigurant un fichier d'en-tête et en perdant ma macro '__declspec (dllexport)'. – ken

+0

Pourquoi devez-vous déclarer dllexport quand c'est une librairie statique? –

11

Ma bibliothèque statique ne contient que deux classes de modèles, donc je n'ai pas eu de fichier .cpp. Cela a provoqué Visual Studio 2015 à ne pas générer un fichier .lib. Pour résoudre ce problème, j'ai créé un fichier huh.cpp qui inclut tous les en-têtes.

+1

J'ai dû ajouter un fichier existant aux filtres 'Fichiers en-tête' et 'Fichiers sources' avant que VS2015 ne veuille générer un fichier .lib. – oddRaven

1

Je viens de rencontrer ce problème.

Cela était dû à l'utilisation d'une macro non valide dans la définition du répertoire de sortie. Dans mon cas, il était enter image description here

quand il aurait dû être

enter image description here

je devais en blanc sur le chemin complet dans la seconde capture d'écran. J'ai eu une macro incorrecte. J'utilisais MsBuildProjectDir alors que j'aurais dû utiliser MsBuildProjectDirectory. La zone de texte en lecture seule affichera le chemin complet (par exemple: C:\Development\blah\blah\blah\) lorsque le répertoire de sortie est valide. Si le répertoire de sortie n'est pas valide, vous obtiendrez quelque chose comme la première capture d'écran.

5

.lib ne sera pas généré si vous manquez d'ajouter le préfixe __declspec (dllexport) pour les méthodes.

Questions connexes