2013-01-03 19 views
6

Po mam zainstalowanego VS2012 mój projekt Qt nie kompilator już (VS2010 i VS2012 ma na moim komputerze). Wiadomość: LNK1123: failure during conversion to COFF: file invalid or corrupt. To było w porządku tylko z VS2010.Qt: Po instalacji awarii VS2012 LNK1123 podczas konwersji do COFF

Dla środowiska VS2012 to zaleca się (patrz: SO here):

  1. skompilować z Enable Incremental Linking NO
  2. Odinstaluj .net 4,5

Ponieważ nie używam Qt w połączeniu z VS2012 (więc bez plugIn), nie mogę setup the project as mentioned. Nie mogę też odinstalować .net 4.5 (potrzebne dla innego projektu).

Czy jest szansa na rozwiązanie problemu? Niektóre powiązane pytania Mam

  1. Czy byłoby to rozwiązanie do kompilacji z kompilatorem C++ VS2012? Here it says Potrzebuję do tego własnej kompilacji Qt 5 - chciałbym uniknąć takiego uszczerbku.
  2. Czy muszę aktualizować Qt?
  3. A może istnieje sposób, aby po prostu ustawić Incremental Linking to off jak w projekcie VS? Gdzie w ustawieniach kompilacji (zrzut ekranu poniżej) powinienem go ustawić?

Win 7 x86 Qt Creator 2.5.2 Qt 4.8.1 VS2012 Ostateczny z Update 1, VS2010 nadal zainstalowany

Project compile settings

- Edycja ---

I Ścieżki są nadal w VS2010 i nie ma ścieżki .net 4.5.

Paths

- Edycja 2 - jako komentarza HP

Przynajmniej próbowałem z moim oprogramowanie antywirusowe off. Ten sam problem. Ponadto sprawdziłem kilka innych mniejszych projektów Qt (jestem sporadycznym koderem Qt, więc nie mam dużego doświadczenia w tej dziedzinie). Robią kompilację. Również wszystkie moje projekty podrzędne w danym projekcie Qt ulegają kompilacji, tylko ostatnia część (GUI, wykorzystująca wszystkie projekty podrzędne) kończy się niepowodzeniem z powyższym błędem.

- Jeden krok dalej -

W moim pliku .pro Używam następujące linie dostać DEFINEwith the hg version, wykorzystując to od wieków.

VERSION = $$system(P:/Tools/TortoiseHg/hg parents --template '{latesttag}+{latesttagdistance}') 
--- $$system line seems to be the line causing the COFF issue, WHY??? 
DEFINES += VERSION=\\\"$$VERSION\\\" 

Po wykonaniu tej czynności udało mi się przeprowadzić rekompilację bez błędu COFF. Ale aplikacja uległa awarii z powodu mieszanych bibliotek 4.8.0/4.8.1. Następnie przeszedłem przez wszystkie podprojekty i znalazłem zduplikowane konfiguracje kompilacji. Czasami dwa razy miałem te same wpisy, czasem brakowało. Poprawiono je, teraz uruchamia się aplikacja (nadal bez tagu wersji).

Build configs

sprawdzone komentarz Hg CMD, wydaje się być OK.

>P:/Tools/TortoiseHg/hg parents --template '{latesttag}+{latesttagdistance}' 
'0.8.902+1' 

Więc dlaczego jest to prowadzi do błędu COFF i dlaczego zawiedli konfiguracje?. Chyba jestem już za stary na te bzdury.

+1

Istnieje kilka artykułów na ten temat na stronie connect.microsoft.com. Ale do tej pory bez możliwości reproinstalacji przez Microsoft. Możesz zamieścić własne, choć to również mocno skłania się ku bezadresowi, biorąc pod uwagę niezwykłe środowisko kompilacji. Wysokie szanse na problemy środowiskowe, najpierw zwalczanie szkodliwego oprogramowania. Lub po prostu to, co mówi, uszkodzony plik .obj lub .lib. –

+3

To pomogło mi http://stackoverflow.com/a/14144713/78043 –

+0

Wielkie dzięki za wskazanie mnie tam! –

Odpowiedz

3

Wszystkie kredyty na ba__friend za podpowiedź. Powód jest zły cvtres.exe zgodnie z opisem here. Wyłącz stary i wszystko jest w porządku (przynajmniej w moim konkretnym przypadku).

1

Miałem ten problem, w moim przypadku powodem było zainstalowanie Visual Studio 2012 na komputerze, który już miał Visual Studion 2010. Nie mogłem również uruchomić projektów C++ w obu Visual Studios (ten sam błąd). Istnieją trzy rozwiązania:

  1. rozwiązanie tymczasowe: użycie Release mod zamiast Debug Zastosowanie działa, ale nie ma debugowania jest dostępny.
  2. Pobierz i zainstaluj QT MinGW zamiast wersji VS (dwukrotnie w rozmiarze)
  3. (zalecane) Instalacja/Reinstall SP1 z Visual Studio 2010.

Miłego kodowania!