Я пытаюсь скомпилировать мой первый проект Qt в VS 2012. Я использую Qt 4.8.5 с открытым исходным кодом. Мне удалось все скомпилировать, и я установил надстройки VS2012 QT. По-видимому, нет надстройки для QT4, только QT5.
У меня было очень простое приложение, скомпилированное и запущенное, теперь я пытаюсь создать приложение с использованием QTableView. Я строю свой класс базы данных на основе учебника ModelView Вот. Теперь я получаю следующую ошибку:
CBDatabase.obj: ошибка LNK2001: неразрешенный внешний символ «public: virtual class QVariant __thiscall CBDatabase :: data (класс QModelIndex const &, int) const «(? data @ CBDatabase @@ UBE? AVQVariant @@ ABVQModelIndex @@ H @ Z)
Мне пришлось изменить свойства компоновщика для связи с библиотеками QT4, поскольку надстройка QT5 VS2012 пыталась связать библиотеки QT5.
Поэтому я думаю, что я не связываю нужные библиотеки, но не могу понять, какую именно мне не хватает.
Вот мой список библиотек:
qtmaind.lib
QtCored4.lib
QtGuid4.lib
QtSqld4.lib
Линкер говорит вам, что вы не определили 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);
}
Других решений пока нет …