Портирование Qt4 в Qt5: неразрешенные внешние символы
Qt5 - это новое поколение Qt, и оно имеет некоторые изменения.
У меня есть проект строительства хорошо с Qt4. Я скачал пакет Qt5-VisualStudio2010 и пытаюсь перенести свой проект с Qt4 на Qt5. Проблемы возникают.
Все пути включения были исправлены. Однако теперь компилятор сообщает о сотнях "неразрешенных внешних символов" (почти все вызовы функций, похоже, что компилятор не может найти ни одного файла.lib). Я даже пытался добавить все.lib файлы, найденные в папке Qt SDK, но безрезультатно. Самый базовый класс и метод: QApplication::exec(...) также указывается как "неразрешенный символ".
Файл проекта был изменен, чтобы соответствовать упаковке Qt5:
myproject.pro file:
QT += widgets
У кого-нибудь есть подобный опыт с этим новым выпуском Qt?
3 ответа
Из 'qt_newbie89' ( http://qt-project.org/forums/viewthread/23200):
Я "случайно" решил проблему. Я щелкнул правой кнопкой мыши на папке проекта в окнах проекта и выбрал qmake. После этого выберите Run и все ошибки исчезли. Я не знаю, почему это работает, кстати.
Из "ChrisW67" ( http://qt-project.org/forums/viewthread/23253/):
Файл Makefile не "испортился": он был именно таким, каким вы его оставили, с полными командами и путями, подходящими для предыдущей установки Qt 4. Когда Qt Creator запустил nmake для сборки проекта, nmake автоматически не перезапустил qmake для генерации Makefile, потому что (нетронутый) Makefile был новее, чем pro-файл, который его сгенерировал. Это нормальное и правильное поведение make, но оно привело к несоответствию между вашим Qt5 в стойле и ожидаемой установкой Qt4.
Мое высказывание: Да, это действительно решает проблему связывания! Проблема заключалась в том, что когда проект создавался с помощью Qt4, файл 'make' также создавался вместе с проектом. Когда я удалил Qt4, установил Qt5 и импортировал старый проект с помощью Qt5 (с новым Qt Creator), возможно, файл 'make' был поврежден.
Это случилось со мной, и я сделал следующее.
- Дополнительно связан Qt5Widgetsd.lib
- Изменено свойство проекта "Обрабатывать Wchar_t как встроенный" на true (в разделе C++ -> Language).
Я подозревал, что вы не единственный, у кого была эта проблема. Вы смотрели на это еще? В нем говорится о скрипте PERL в qt/base/bin, который называется: fixqt4headers.pl. Это предназначено для исправления заголовков. Я заметил еще одну ссылку, которая может помочь, если это не поможет вам, попробуйте это, это выглядит довольно хорошо продуманным. И нет, я не пробовал. Я еще не обновился до Qt 5. CHEERS!