2

我正在尝试在 VS 2012 中编译我的第一个 Qt 项目。我正在使用 Qt 4.8.5 开源。我已经成功编译了所有内容,并且安装了 VS2012 QT 插件。QT4 显然没有插件,只有 QT5。

我编译并运行了一个非常基本的应用程序,现在我正在尝试使用 QTableView 构建一个应用程序。我正在根据此处的 ModelView 教程构建我的数据库类。我现在收到以下错误: CBDatabase.obj : error LNK2001: unresolved external symbol "public: virtual class QVariant __thiscall CBDatabase::data(class QModelIndex const &,int)const " (?data@CBDatabase@@UBE?AVQVariant@ @ABVQModelIndex@@H@Z)

当 QT5 VS2012 插件试图链接 QT5 库时,我不得不更改链接器属性以链接到 QT4 库。

所以我最好的猜测是我没有链接正确的库,但我似乎无法弄清楚我错过了哪一个。

这是我的库列表: qtmaind.lib QtCored4.lib QtGuid4.lib QtSqld4.lib

4

1 回答 1

2

链接器告诉您您没有定义类的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);
}
于 2014-03-19T14:41:26.607 回答