2010-06-09 8 views
6

Ce n'est pas un double de VC++ resources in a static library parce qu'il n'a pas aidé :)Ressources en question bibliothèque statique

J'ai une bibliothèque statique avec DEUX.rc fichiers dans son projet. Quand je construis mon projet en utilisant la configuration Debug, je récupère l'erreur suivante (MSVS2008):

fatal error LNK1241: resource file res_yyy.res already specified 

Notez que cela ne se produit que dans Debug et Release bibliothèque construit sans problèmes. La ligne de commande pour Resources page dans la configuration du projet a la même pour chaque construction:

/fo"...(Path here)/Debug/project_name.res" 
/fo"...(Path here)/Release/project_name.res" 

et je ne peux pas comprendre ce qui est le problème. Des idées?

MISE À JOUR

Je ne sais pas pourquoi cela se produit, mais quand je tourne l'option « Utiliser un code Link-temps Generation » sur le problème disparaît.

Quelqu'un pourrait-il expliquer pourquoi cela se produit? Je pense que MS-compilateur fait quelque chose de vraiment étrange ici.

Merci.

Répondre

5

Résolu ce problème en définissant EXACTEMENT UN fichier de sortie .res dans les paramètres. Je ne suis pas vraiment sûr pourquoi c'était correct dans le mode Release cependant.

+1

Où avez-vous défini ceci? –

+1

où en effet ??? –

+0

allez dans Propriétés/Ressources/Nom du fichier de ressources et supprimez la ligne. – Juliano

4

Je suis tombé sur ce post parce que j'avais la même erreur de lien.

L'approche spécifiée dans la réponse a produit un avertissement de liaison sur mon système (xyz.res: avertissement LNK4042: objet spécifié plusieurs fois, extras ignoré).

Ce qui a fonctionné pour moi était de retirer les entrées de « Nom du fichier de ressources » et « Culture » dans la configuration Propriétés/Ressources.

+0

Merci, je pourrais construire en suivant votre chemin. Je me demande à quoi servent les fichiers de ressources. – yoshi

0

Pour moi, je résolu le problème en allant à mon explorateur de solution et excluant tous les fichiers, puis re-'include dans project'-ed les fichiers .h et .cpp que j'utilisais

1

Je liquidée en invoquant Cette erreur lors d'une exploration pour obtenir un tas de projets dépendants à tous les construire en tant que DLL à partir d'un grand ensemble qui ont tous été initialement configurés pour construire en tant que bibliothèques statiques. J'ai modifié par inadvertance l'un des paramètres du projet dans les références du projet pour obtenir la construction des DLL. Revérification que mes modifications ont fonctionné pour la configuration de bibliothèque statique complète a révélé l'erreur de lien. Donc, pour un projet dépendant spécifique qui avait un fichier de ressources pour inclure les informations de version, l'indicateur Project Reference Properties: Link Library Dependencies était défini sur True. Le changement à False a corrigé l'erreur. Incidemment, j'avais seulement besoin du fichier de ressources pour la version Dll, car j'avais besoin que les dépendances de bibliothèque de liens soient définies sur True pour corriger les erreurs de l'éditeur de liens dans la construction Dll. Donc ce que j'ai fini par faire est d'exclure le fichier de ressources de la construction de la bibliothèque statique en définissant Yes à Excluded From Build.