Visual Studio: LINK : fatal error LNK1181: impossible d'ouvrir le fichier d'entrée
J'ai rencontré un bug étrange dans Visual Studio 2010 pour un certain temps maintenant.
J'ai une solution composée d'un projet qui rassemble une bibliothèque statique, et un autre projet qui est vraiment simple, mais cela dépend de cette bibliothèque.
Parfois, dans les derniers jours, extrêmement fréquentes, après la Reconstruction de la Solution ou tout simplement pour le compiler avec 1-3 source modifié les fichiers, j'obtiens l'erreur suivante:
2>LINK : fatal error LNK1181: cannot open input file 'thelibrary.lib'
========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ==========
Où la compilation de thelibrary.lib
a été un succès sans erreurs ou des avertissements.
J'ai essayé la solution de nettoyage, mais cela ne fonctionne pas toujours.
- Quel est le problème ici?
- J'ai exactement le même problème. Solution avec 3 c++ natif de projets. 1 exe et 2 bibliothèques statiques. Toujours mentionnés erreur sur la Reconstruction. Après que je viens de faire Construire et il va sur ok. Ressembler à un bug.
- J'ai le même problème. J'ai seulement le type d' 'abc' au lieu de 'abc.lib'. Après les corriger, tout est fait.
Vous devez vous connecter pour publier un commentaire.
Dans l'éditeur de liens, générale, d'autres répertoires de la bibliothèque, ajouter le répertoire à l' .dll ou .libs que vous avez inclus dans l'éditeur de liens, d'Entrée.
Il ne fonctionne pas si vous le mettez dans VC++ Annuaires, Répertoires de la Bibliothèque.
Aller à:
Je peux voir seulement 1 passe des choses ici:
Vous n'avez pas à régler correctement les dépendances thelibrary.lib de votre projet, ce qui signifie que thelibrary.lib est construit dans le mauvais ordre (Ou dans le même temps si vous avez plus de 1 CPU configuration de la compilation, ce qui peut aussi expliquer le caractère aléatoire de l'erreur). ( Vous pouvez modifier le projet de dépendances dans: Menu->Projet->les Dépendances d'un Projet )
J'ai récemment frappé de la même erreur. Le creusement évoqué ce:
http://support.microsoft.com/kb/815645
En gros, si vous avez des espaces dans le chemin de la .lib, c'est mauvais. Ne sais pas si c'est ce qui se passe pour vous, mais semble raisonnablement possible de le faire.
La solution est soit 1) mettre la lib de référence dans les "citations", ou 2) ajouter la lib du chemin d'accès à votre Bibliothèque de Répertoires (Propriétés de Configuration >> Répertoires de VC++).
J'ai eu le même problème à la fois par rapport à 2010 et VS 2012.
Sur mon système, le premier lib statique a été construit, puis s'est immédiatement supprimé lorsque le projet principal a commencé la construction de.
Le problème, c'est la commune intermédiaire de dossier pour plusieurs projets. Suffit d'attribuer séparé intermédiaire de dossier pour chaque projet.
En lire plus sur ce ici
J'ai eu un problème similaire que j'ai fait
LINK1181
erreurs sur le.OBJ
fichier qui faisait partie du projet lui-même (et il n'y avait que 2 .cxx fichiers dans l'ensemble du projet).Au début, j'avais l'installation du projet pour générer un
.EXE
dans Visual Studio, puis dans leProperty Pages -> Configuration Properties -> General -> Project Defaults -> Configuration Type
, J'ai changé la .EXE pour .DLL. Se doutant que quelque sorte de Visual Studio 2008 a été de se confondre, j'ai recréé l'ensemble de la solution à partir de zéro en utilisant .DLL mode dès le début. Problème a disparu après que. J'imagine que si vous avez manuellement choisi votre chemin à travers l' .vcproj et d'autres fichiers que vous pourriez trouver comment arranger les choses, sans commencer à partir de zéro (mais mon programme se composait de deux .fichiers cpp, donc c'était plus facile de recommencer).Je l'ai résolu avec les éléments suivants:
Allez dans Affichage-> Pages de propriétés -> Propriétés de Configuration -> Linker -> Input
En vertu de dépendances supplémentaires ajouter le thelibrary.lib. N'utilisez pas le citer.
Je suis d'achoppement dans la même question. Pour moi, il semble être provoqué par le fait d'avoir 2 projets avec le même nom, l'un dépendant de l'autre.
Par exemple, j'ai un projet nommé Foo, qui produit des Foo.lib. J'ai ensuite un autre projet qui est aussi nommé Foo, qui produit Foo.exe et les liens dans Foo.lib.
J'ai regardé le fichier de l'activité w/Moniteur de Processus. Ce qui semble se passer, c'est Foo(lib) est construite d'abord-ce qui est bon parce que Foo(exe) est marquée en fonction Foo(lib). Ce est tout très bien et est construit avec succès, et est placée dans le répertoire de sortie--$(OutDir)$(TargetName)$(TargetExt). Puis Foo(exe) est déclenchée à reconstruire. Eh bien, une reconstruction est propre, suivie par une accumulation. Il semble que le "propre" stade de l'Foo.exe la suppression de Foo.lib du répertoire de sortie. Cela explique aussi pourquoi la "construction" d'œuvres--qui ne supprime pas les fichiers de sortie.
Un bug dans VS, je suppose.
Malheureusement je n'ai pas de solution à ce problème, car il implique de Reconstruire. Une solution de contournement est d'manuellement à Nettoyer, et ensuite Construire.
Je ne sais pas pourquoi, mais en changeant l'éditeur de liens->Input->Dépendances Supplémentaires de référence de "dxguid.lib" à "C:\Program Files (x86)\Microsoft DirectX SDK (juin 2010)\Lib\x86\dxguid.lib" (dans mon cas) était la seule chose qui a fonctionné.
Pour moi, le problème était dû à un mauvais
include
répertoire. Je n'ai aucune idée de pourquoi cela a provoqué l'erreur avec l'apparence manque lib que le répertoire ne contient que les fichiers d'en-tête. Et le répertoire de la bibliothèque a eu le bon chemin.Peut-être que vous avez un problème matériel.
J'ai eu le même problème sur mon ancien système (AMD 1800 MHz CPU ,1 go de RAM ,Windows 7 Ultimate) ,jusqu'à ce que j'ai changé le 2x 512 MO de RAM à 2x 1 go de RAM. N'ai pas eu de problèmes depuis. Aussi d'autres (petits) problèmes ont disparu. Suppose que ces deux 512 MO modules ne s'aiment pas beaucoup ,parce que 2x 512 MO 1 GO + ou 1x 512 MO + 2x 1 go ne fonctionne pas correctement non plus.
Vous pouvez également fixer les espaces-en-problème de chemin d'accès en spécifiant le chemin de la bibliothèque dans le DOS "8.3" format.
Pour obtenir le 8.3 forme, faire (à la ligne de commande):
récursivement à tous les niveaux de répertoires.
J'ai eu le même problème. Résolu par la définition d'une macro
OBJECTS
qui contient tous les objets de l'éditeur de liens par exemple:Puis en spécifiant
$(OBJECTS)
sur le linker de la ligne de commande.Je n'utilise pas Visual Studio si, juste nmake et un .Fichier MAK
J'ai eu le même message d'erreur lors de l'exécution de lib.exe à partir de cmd sur Windows avec une longue liste d'arguments. apparemment cmd.exe a max la longueur de la ligne d'environ 8K caractères, ce qui a entraîné que les noms de fichier à la fin de ce seuil a été changé, résultant d'un mauvais nom de fichier d'erreur.
ma solution a été de couper la ligne. J'ai enlevé tous les chemins à partir des noms de fichiers et ajouté chemin d'accès unique à l'aide de /LIBPATH option. par exemple:
J'ai trouvé une autre solution pour cette...
En fait, j'ai manqué de virgule de séparation entre les deux de la bibliothèque des chemins. Après l'ajout du commun, il a travaillé pour moi.
Aller à:
Project properties -> Linker -> General -> Link Library Dependencies
Sur ce chemin, assurez-vous que le chemin d'accès de la bibliothèque est correct.
Code précédent (Avec Bug - parce que j'ai oublié de séparer les deux lib chemins par des virgules):
Code après correction (Juste séparer les bibliothèques par des virgules):
Espère que cela va vous aider.
Dans mon cas, j'ai eu de la bibliothèque installée à l'aide du package NuGet (cpprestsdk) ET je faussement ajouté la lib à l'ajout de Dépendances dans les paramètres de l'éditeur de liens. Il s'avère, le logiciel fait tout pour vous.
L'éditeur de liens a ensuite essayé de trouver la bibliothèque dans le chemin de la bibliothèque et bien sûr ne pouvait pas le trouver.
Après le retrait de la bibliothèque de l'Dépendances Supplémentaires tout compilé et lié amende.
J'ai créé un
bin
répertoire à la project_dir niveau, puis créé unrelease/debug
répertoire à l'intérieur dubin
dossier, ce qui a résolu le problème pour moi.