Qt 4.8.5 QVariant неразрешенный внешний символ Visual Studio 2012

Я пытаюсь скомпилировать свой первый проект Qt в VS 2012. Я использую Qt 4.8.5 с открытым исходным кодом. Мне удалось все скомпилировать, и я установил надстройки VS2012 QT. По-видимому, надстройки для QT4 нет, только QT5.

У меня было скомпилировано и запущено очень простое приложение, теперь я пытаюсь создать приложение с помощью QTableView. Я создаю свой класс базы данных на основе руководства по ModelView здесь. Теперь я получаю следующую ошибку: CBDatabase.obj: error LNK2001: неразрешенный внешний символ "public: виртуальный класс QVariant __thiscall CBDatabase::data(class QModelIndex const &,int)const" (?data@CBDatabase@@UBE?AVQVariant@ @ABVQModelIndex@@H@Z)

Мне пришлось изменить свойства компоновщика, чтобы связать библиотеки QT4, поскольку надстройка QT5 VS2012 пыталась связать библиотеки QT5.

Поэтому я думаю, что я не связываю правильные библиотеки, но я не могу понять, какую из них мне не хватает.

Вот мой список библиотек: qtmaind.lib QtCored4.lib QtGuid4.lib QtSqld4.lib


person jasonlg3d    schedule 19.03.2014    source источник


Ответы (1)


Компоновщик сообщает вам, что вы не определили член virtual QVariant CBDatabase::data(QModelIndex const &,int) const вашего класса CBDatabase. Отсутствующий элемент не исходит из Qt, это часть вашего собственного кода. Проблема не имеет ничего общего с Qt. Для его воспроизведения достаточно следующего (вот и все, линковка с Qt не нужна):

class QModelIndex {};
class QVariant {};
class CBDatabase {
public:
  // declaration, no definition
  virtual QVariant data(const QModelIndex &, int) const;
};

int main() {
  CBDatabase db;
  db.data(QModelIndex(), 0);
}
person Kuba hasn't forgotten Monica    schedule 19.03.2014
comment
/facepalm Давайте все притворимся, что этого никогда не было. - person jasonlg3d; 19.03.2014