Предупреждение компоновщика LNK4099 с чистой установкой Qt SDK и Visual C ++ 2008 - PullRequest
5 голосов
/ 02 декабря 2011

Выполнена чистая установка на новый компьютер Windows 7 с:

  • Visual Studio 2008 SP1
  • Qt SDK 1.1.4

Затем ясоздал новый проект в Qt Creator.Я выбрал «Qt Gui Application» в «Qt Widget Project» и настроил его на рабочие столы с Visual C ++ 2008, как на отладку, так и на выпуск (в основном настройки по умолчанию).

Затем я нажал «Build» и получил ....

qtmaind.lib(qtmain_win.obj):-1: warning: LNK4099: PDB 'vc90.pdb' was not
found with 'c:\QtSDK\Desktop\Qt\4.7.4\msvc2008\lib\qtmaind.lib' or at
'C:\Users\JamesJ\Desktop\QtTest-build-desktop-Qt_4_7_4_for_Desktop_-
_MSVC2008__Qt_SDK__Debug\debug\vc90.pdb'; linking object as if no debug info

Я, должно быть, упускаю что-то очевидное - конечно, опыт работы с Qt не должен включать предупреждения компилятора / компоновщика?!?!

Как мне решитьэтот компоновщик предупреждает?Я предпочитаю воспринимать предупреждения как ошибки, так что ... я бы хотел исправить это.

Ответы [ 5 ]

3 голосов
/ 02 декабря 2011

Путь к vc90.pdb, встроенный в qtmain_win.obj, не совпадает с путем, заданным в настройках компоновщика.

В соответствии с инструкциями, приведенными в этой статье :

В настройках компоновщика Properties->Linker->Debugging->Generate Program Database File имеет значение $(TargetDir)$(TargetName).pdb.

В настройках C / C ++ для Properties->C/C++->Output Files->Program Database File должно также быть установлено на $(TargetDir)$(TargetName).pdb (по умолчаниюзначение $(IntDir)\vc90.pdb).

В противном случае вы можете попытаться очистить и перестроить сборку Debug.

1 голос
/ 10 сентября 2012

Отдельная установка Qt Library (4.8.2) и Qt Creator (2.5.2) работала здесь.Я больше не получаю предупреждение LNK4099.

Обязательно удалите оставленные QtSDK настройки: ключи в KHCU\Software\Nokia и папке %APPDATA%\Nokia.

Обновление библиотеки QT вручную в пакете QtSDKменеджер тоже может работать.

0 голосов
/ 09 июля 2015

Это происходит, когда вы перемещаете каталоги Qt (т.е. те, которые содержат libs / pdbs) в другой каталог после компиляции.Путь к файлу PDB встроен в библиотеки, поэтому при его перемещении компоновщик не может его найти.

Мне кажется, что самая безопасная / самая чистая проблема - перестроить Qt в новом месте.

0 голосов
/ 29 февраля 2012

Добавить

QMAKE_LFLAGS += /ignore:4099

в ваш .pro файл.

если вы не хотите создавать файлы .pdb для исполняемых файлов или библиотеки, добавьте

QMAKE_CXXFLAGS += /Z7

поэтому отладочная информация будет помещена в файлы .obj.

Возможно, вам придется удалить все файлы Makefile *, чтобы обновить правила сборки. Протестировано в Qt Creator 2.4.1 с MSVC 2008 SP1

0 голосов
/ 21 декабря 2011

Не удалось найти решение этой проблемы. Я уверен, что перекомпиляция Qt решит проблему, но для простоты я хочу придерживаться того, что установлено вместе с SDK.

...