Qt: После установки сбоя VS2012 LNK1123 во время преобразования в COFF

После того, как я установил VS2012, мой проект Qt больше не компилируется (на моем компьютере есть VS2010 и VS2012). Сообщение: LNK1123: failure during conversion to COFF: file invalid or corrupt, Раньше было хорошо только с VS2010.

Для среды VS2012 рекомендуется (см. Здесь):

  1. Компилировать с Enable Incremental Linking NO
  2. Удалить.net 4.5

Так как я не использую Qt в сочетании с VS2012 (поэтому нет подключаемого модуля), я не могу настроить проект, как упоминалось. Также я не могу удалить.net 4.5 (необходим для другого проекта).

Есть ли шанс решить проблему? У меня есть несколько связанных вопросов

  1. Будет ли это решение для компиляции против компилятора VS2012 C++? Здесь говорится, что для этого мне понадобится собственная компиляция Qt 5 - я бы хотел избежать таких хлопот
  2. Нужно ли обновлять Qt?
  3. Или есть способ просто установить Incremental Linking to off как в проекте VS? Где в настройках сборки (скриншот ниже) мне нужно его установить?

Win 7, x86 QtCreator 2.5.2 Qt 4.8.1 VS2012 Ultimate с обновлением 1, VS2010 все еще установлен

Настройки компиляции проекта

-- Редактировать ---

Я перепроверил, пути все еще к VS2010, и нет пути.net 4.5 включен.

пути

- Изменить 2 - с комментария HP

По крайней мере, я пытался отключить антивирусное программное обеспечение. Та же проблема. Кроме того, я проверил некоторые другие небольшие проекты Qt (я спорадический кодер Qt, поэтому у меня нет большого опыта в этой области). Они компилируют. Также все мои подпроекты в затронутом проекте Qt компилируются, только последняя часть (GUI, использующая все подпроекты) завершается с ошибкой, описанной выше.

-- На шаг впереди --

В моем .pro файл, который я использую следующие строки, чтобы получить DEFINE с версией hg, используя это целую вечность.

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\\\"

Сняв это, я смог перекомпилировать без ошибки COFF. Но приложение упало из-за смешанных библиотек 4.8.0 / 4.8.1. Затем я просмотрел все подпроекты и нашел дублированные конфигурации сборки. Иногда у меня были одни и те же записи дважды, иногда отсутствующие. Исправил их, приложение теперь работает (все еще без тега версии).

Построить конфиги

Проверил комментарий hg CMDВроде бы все нормально.

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

Так почему же это приводит к ошибке COFF и почему испорченные конфигурации?, Думаю, я слишком стар для этого дерьма.

2 ответа

Решение

Все кредиты ba__friend за подсказку. Причина неправильная cvtres.exe как описано здесь. Отключить старый и все в порядке (по крайней мере, в моем конкретном случае).

У меня была эта проблема, в моем случае причина была в установке Visual Studio 2012 на машине, на которой уже был Visual Studion 2010. Я также не мог запускать проекты C++ в обеих Visual Studio (та же ошибка). Есть три решения:

  1. Временное решение: используйте Release mode вместо Debug, приложение запускается, но отладка недоступна.
  2. Скачайте и установите Qt MinGW вместо версии VS (в два раза больше)
  3. (Рекомендуется) Установите / переустановите пакет обновления 1 для Visual Studio 2010.

Приятного кодирования!

Другие вопросы по тегам