Qt 5.2 неожиданный внешний символ

Я сделал проект на Linux с qt 4.7 и qxmpp 0.7.6, все работает хорошо, я установил Qt 5.2 на Windows, скомпилировал qxmpp и установил его, он успешно завершился и находится в C:\Qt\Qt5.2.0\5.2.0\msvc2010\include\qxmpp dir, кажется, все прошло хорошо, я скопировал проект из linux, изменил includepath для qxmpp, чтобы он теперь подходил для windows и запустил qmake, без проблем, но когда я захотел запустить его, я получил 122 ошибки, все они выглядят так: mainwindow.obj:-1: ошибка: LNK2019: неразрешенный внешний символ "__declspec (dllimport) public: virtual _thiscall QXmppCallManager:: ~ QXmppCallManager (void)" (_imp _?? 1QXmppCallManager @@ UAE @ XZ), на который ссылается функция "public: virtual __" MainWindow::~MainWindow(void) "(??1MainWindow@@UAE@XZ)

все ошибки для классов qxmpp

вот мой.pro файл

INCLUDEPATH += "C:\Qt\Qt5.2.0\5.2.0\msvc2010\include\qxmpp"

QT       += core gui network xml multimedia widgets

TARGET = IM-client
TEMPLATE = app


SOURCES += main.cpp\
#more sources etc

Есть идеи, чем это может быть вызвано?

1 ответ

Решение

Вы не связываете свой проект с библиотекой qxmpp. Я понятия не имею, как он может скомпилироваться даже под Linux, не имея LIBS += ... линия присутствует.

Моя ставка: вы вырезали LIBS строка, и эта строка осталась от компиляции Linux, и не имеет смысла в Windows. Вы должны настроить его так же, как вы сделали для INCLUDEPATH.

Возможно, вы также захотите иметь отдельные настройки для обеих платформ, чтобы вам не приходилось постоянно настраивать файл проекта:

win32 {
  INCLUDEPATH += ...
  LIBS += ...
}
unix {
  INCLUDEPATH += ...
  LIBS += ...
}
Другие вопросы по тегам