2010-06-09 7 views
6

To nie jest duplikatem VC++ resources in a static library bo to nie pomogło :)zasobów w pytaniu statycznej biblioteki

Mam statyczną bibliotekę z DWA.rc plików w to przedsięwzięcie. Kiedy budować mojego projektu przy użyciu konfiguracji Debug, odzyskać następujące błąd (MSVS2008):

fatal error LNK1241: resource file res_yyy.res already specified 

uwaga, że ​​to dzieje się tylko w Debug i Release Biblioteka buduje bez żadnych kłopotów. Linia poleceń dla Resources strony w konfiguracji projektu wygląda tak samo dla każdej kompilacji:

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

i nie mogę zrozumieć, co jest problemem. Jakieś pomysły?

UPDATE

Nie wiem, dlaczego tak się dzieje, ale po włączeniu opcji "Użyj link-Time Code Generation" na problem zniknie.

Czy ktoś mógłby wyjaśnić, dlaczego tak się dzieje? Czuję, że kompilator MS robi tu coś naprawdę dziwnego.

Dzięki.

Odpowiedz

5

Rozwiązano ten problem poprzez ustawienie DOKŁADNIE JEDNEGO .res pliku wyjściowego w ustawieniach. Nie jestem właściwie pewien, dlaczego był w porządku w trybie Release.

+1

Gdzie to ustawiłeś? –

+1

gdzie rzeczywiście ??? –

+0

przejdź do Właściwości/Resources/Nazwa pliku zasobów i usuń linię. – Juliano

4

Natknąłem się na ten wpis, ponieważ miałem ten sam błąd linkera.

Podejście określone w odpowiedzi spowodowało ostrzeżenie linkera w moim systemie (xyz.res: ostrzeżenie LNK4042: obiekt określony więcej niż jeden raz, dodatki pominięte).

Co pracował dla mnie było usunąć wpisy o „Nazwa pliku zasobów” i „Kultury” w konfiguracji/Resources Właściwości.

+0

Dziękuję, mogę budować po twojej drodze. Zastanawiam się, do jakich plików zasobów są używane. – yoshi

0

Dla mnie Naprawiłem problem, przechodząc do mojego Solution Explorer i wyłączając wszystkie pliki, a następnie ponownie w'include project'-ed pliki .cpp i .h, że używałem

1

I skończyłem powołując ten błąd podczas eksploracji, aby uzyskać zestaw zależnych projektów dla wszystkich kompilowanych jako biblioteki dll z dużego zestawu, który początkowo był ustawiony jako biblioteka statyczna. Nieumyślnie zmieniłem jedno z ustawień projektu w Referencjach Projektu, aby budować biblioteki. Ponowne sprawdzenie, czy moje zmiany zadziałały w konfiguracji pełnej biblioteki statycznej, ujawniło błąd połączenia. Tak więc dla jednego konkretnego projektu zależnego, który posiadał plik zasobów zawierający informacje o wersji, ustawiono flagę Project Reference Properties: Link Library Dependencies na True. Zmiana tego na False naprawiła błąd.

Nawiasem mówiąc, potrzebowałem tylko pliku zasobów dla wersji Dll, ponieważ tak naprawdę potrzebowałem zależności zależności biblioteki linków od wartości True, aby naprawić błędy łącznika w kompilacji biblioteki DLL. Robię to, wykluczając plik zasobów z kompilacji biblioteki statycznej, ustawiając Yes na Excluded From Build.