68 votes

La construction a réussi, mais aucun fichier .lib n'a été créé.

J'ai hérité d'une quantité importante de code, y compris un projet Visual Studio qui est censé (pour autant que je sache) construire un fichier .lib. Visual studio dit "... Generating Code... Création de la bibliothèque... Creating browse information file...", et à la fin, il dit que la construction a réussi. Dans le dossier release/debug, il y a un tas de fichiers .obj, mais il n'y a pas de fichier .lib. Qu'est-ce qui pourrait me manquer ?

Merci de votre attention !

112voto

Steve Townsend Points 36948

Ouvrez les propriétés du projet (cliquez avec le bouton droit de la souris sur le projet dans l'explorateur de solutions et sélectionnez "Propriétés"). Sous "Bibliothécaire", cochez "Fichier de sortie" - c'est là que la sortie doit aller.

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

Pour les DLL, un fichier .Lib n'est pas créé si la DLL n'exporte rien pour un usage externe. Je ne pense pas que cela s'applique aux librairies statiques, mais je devrais m'assurer que vous exportez quelque chose de public à partir du code source de votre projet de librairie.

41voto

snb Points 240

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

18voto

Grault Points 788

Ma bibliothèque statique ne contient rien d'autre que deux classes modèles, je n'avais donc pas de fichier .cpp. De ce fait, Visual Studio 2015 ne produisait pas de fichier .lib. Pour résoudre ce problème, j'ai créé un fichier huh.cpp qui comprend tous les en-têtes.

2 votes

J'ai dû ajouter un fichier existant aux filtres "Header Files" et "Source Files" avant que VS2015 ne veuille générer un fichier .lib.

11voto

Chuck Points 166

J'ai eu le même problème, même si j'utilisais déjà la fonction __declspec(dllexport) fonction.

Votre ProjectName.cpp Le fichier doit #include "ProjectName.h" . Si vous n'incluez pas le fichier d'en-tête, les fonctions ne sont pas exportées. La DLL se construit correctement, sans erreur ni avertissement (au moins dans VS2017 15.8), mais vous n'obtenez pas de fichier LIB.

Inclure l'en-tête et boom - le fichier LIB est généré. Une erreur de débutant, j'en suis sûr, mais tout le monde doit commencer à apprendre quelque part.

1 votes

Cela a résolu le problème de création de DLL SQLite3 que j'avais, puisque la documentation officielle ne produit que le fichier .dll sans le fichier .lib.

4voto

Samil Points 323

Dans mon cas (Visual Studio 2019), lorsque #include "pch.h" n'était pas la toute première instruction include dans cpp, le fichier lib n'était pas créé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X