2010-06-09 3 views
6

ist kein Duplikat von VC++ resources in a static library, weil es nicht :) halfRessourcen in statischer Bibliothek Frage

Ich habe eine statische Bibliothek mit ZWEI.rc-Dateien in dem Projekt ist. Wenn ich mein Projekt mit der Debug Konfiguration bauen, rufe ich die folgenden Fehler (MSVS2008):

fatal error LNK1241: resource file res_yyy.res already specified 

Beachten Sie, dass diese Builds ohne Probleme nur in Debug und Release Bibliothek geschieht. Die Befehlszeile für Resources Seite in der Projektkonfiguration sieht gleich für jeden Build:

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

und ich kann nicht verstehen, was das Problem ist. Irgendwelche Ideen?

UPDATE

Ich weiß nicht, warum dies geschieht, aber wenn ich „Use Link-Zeitcodegenerierung“ Option auf das Problem geht weg drehen.

Könnte jemand erklären, warum das passiert? Ich fühle mich wie MS-Compiler hier etwas wirklich seltsames tut.

Danke.

Antwort

5

Dieses Problem wurde gelöst, indem in den Einstellungen EXAKT EINE .res Ausgabedatei festgelegt wurde. Ich bin mir nicht wirklich sicher, warum es im Release Modus obwohl okay war.

+1

Wo haben Sie das festgelegt? –

+1

wo in der Tat ??? –

+0

gehen Sie zu Eigenschaften/Ressourcen/Ressourcendateiname und löschen Sie die Zeile. – Juliano

4

Ich stieß auf diesen Beitrag, weil ich den gleichen Linker-Fehler hatte.

Die in der Antwort angegebene Vorgehensweise führte zu einer Linkerwarnung auf meinem System (xyz.res: warning LNK4042: Objekt wurde mehrmals angegeben; Extras wurden ignoriert).

Was für mich gearbeitet wurde zu die Einträge von „Ressourcendateinamen“ und „Kultur“ in der Konfiguration Eigenschaften/Ressourcen entfernen.

+0

Danke, ich könnte dir folgen. Ich frage mich, für welche Ressourcen-Dateien verwendet werden. – yoshi

0

Für mich ich das Problem behoben, indem auf meine Lösung Explorer gehen und unter Ausschluss aller Dateien und dann wieder'include in Projekt'-ed die .h und CPP-Dateien, die ich

1

mit Wund ich auf Berufung Dieser Fehler während einer Untersuchung, bei der alle abhängigen Projekte als DLLs aus einer großen Menge erstellt wurden, die alle ursprünglich als statische Bibliotheken erstellt wurden. Ich habe versehentlich eine der Projekteinstellungen in den Projektreferenzen geändert, um die DLLs zu erstellen. Das erneute Überprüfen, dass meine Änderungen für die vollständige statische Bibliothekskonfiguration funktionierten, offenbarte den Verbindungsfehler. Für ein bestimmtes abhängiges Projekt, in dem eine Ressourcendatei Versionsinformationen enthielt, war das Flag Project Reference Properties: Link Library Dependencies auf True gesetzt. Das Ändern zu False reparierte den Fehler.

Übrigens brauchte ich nur die Ressource-Datei für die Dll-Version, da ich tatsächlich Link Library Abhängigkeiten auf True gesetzt hatte, um Linker-Fehler in der Dll-Build zu beheben. Was ich damit gemacht habe, ist das Ausschließen der Ressourcendatei von der statischen Bibliothekserstellung durch Setzen von Yes auf Excluded From Build.