0 votes

Dépendance mystérieuse de la bibliothèque par chemin relatif

Après avoir chargé une application MFC existante dans Visual Studio 2008, je me retrouve avec une erreur de liaison :

LINK : fatal error LNK1104: cannot open file '..\..\xpressmp\lib\xprm_rt.lib'

J'ai regardé "partout", mais je n'arrive pas à trouver où le chemin relatif est défini. Le fichier lib est situé dans C:\xpressmp\lib J'ai ajouté ce répertoire à la fois sous Tools-Options->Projects and Solutions->VC++Directories->Library files et Project->Properties->Linker->Additional Library Directories. J'ai également recherché tous les fichiers du projet, sans succès.

Le fichier de bibliothèque (xprm_rt.lib) figure dans la liste des dépendances supplémentaires pour Debug et Release. J'ai également essayé d'y ajouter le chemin d'accès, mais cela n'a rien donné. Je ne trouve aucun commentaire-directif #pragma.

A propos du LNK1104, il est clair que le fichier n'existe pas dans l'emplacement que le linker recherche. Mais je ne vois pas pourquoi il cherche à cet endroit ( ..\..\ ...) car je n'ai pas spécifié de chemins relatifs.

Toute aide est appréciée :-)

UPDATE : Dans le fichier .vcproj du projet, j'ai trouvé le xml suivant :

<File RelativePath="..\..\XpressMP\lib\xprm_rt.lib"></File>
<File RelativePath="..\..\XpressMP\lib\xprs.lib"></File>

Après avoir supprimé ces lignes (où étaient-elles placées ?), j'ai pu établir un lien avec succès. Merci pour votre aide, il semble que le chemin relatif de la bibliothèque était effectivement ajouté "automatiquement" par VS.

Merci à vous deux, je pense que c'est Nick qui m'a mis sur la bonne voie.

2voto

ChrisN Points 10734

Dans les propriétés du projet, regardez sous Configuration Properties -> Linker -> Input -> Additional Dependencies, pour chacune des configurations de votre projet (Debug, Release, etc). Cherchez également #pragma comment(lib, ...) dans le code.

Comme vous avez ajouté le C:\xpressmp\lib au chemin de recherche de la bibliothèque dans Répertoires VC++, vérifiez que seul le nom du fichier de la bibliothèque est spécifié sous Dépendances supplémentaires, et qu'il n'inclut pas le chemin d'accès (c.-à-d, xprm_rt.lib pas ..\..\xpressmp\lib\xprm_rt.lib ).

Par ailleurs, avez-vous essayé chacune des solutions proposées dans la section Documentation sur les erreurs LNK1104 ?

0voto

Lars Points 27

Merci d'avoir répondu si rapidement !

J'ai le fichier de la bibliothèque ( xprm_rt.lib ) listé sous Dépendances supplémentaires pour Debug et Release. J'ai également essayé d'y ajouter le chemin, mais cela n'a pas aidé. Je ne trouve pas de #pragma comment -directives.

A propos du LNK1104, il est clair que le fichier n'existe pas dans l'emplacement que le linker recherche. Mais je ne vois pas pourquoi il cherche à cet endroit ( ..\..\... )

0voto

Nick Points 5293

Ça ressemble à l'une des deux possibilités pour moi :

  • La bibliothèque elle-même définit le chemin d'inclusion de la librairie via une directive #pragma comment(lib, ...) ; recherchez les en-têtes de la bibliothèque pour voir si c'est le cas.
  • Vous avez un projet pour la bibliothèque incluse dans votre solution dont votre projet principal dépend, et le chemin relatif de la bibliothèque est ajouté automatiquement par VC ; vérifiez la page des propriétés de la ligne de commande pour le projet principal pour voir si c'est le cas.

C'est ce à quoi je pense qui pourrait causer l'erreur ; j'espère que cela vous aidera.

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