我正在尝试在VS 2012中编译我的第一个Qt项目。我正在使用Qt 4.8.5开源。我设法将所有内容编译完毕,并安装了VS2012 QT加载项。显然,仅QT5没有针对QT4的插件。

我已经编译并运行了一个非常基本的应用程序,现在我正尝试使用QTableView构建应用程序。我正在基于ModelView教程here构建数据库类。我现在收到以下错误:
CBDatabase.obj:错误LNK2001:未解析的外部符号“公共(public):虚拟类QVariant __thiscall CBDatabase::data(class QModelIndex const&,int)const“(?data @ CBDatabase @@ UBE?AVQVariant @@ ABVQModelIndex @@ H @ Z

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

因此,我最好的猜测是我没有链接适当的库,但是我似乎无法弄清楚缺少哪个库。

这是我的图书馆 list :
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);
}

关于c++ - Qt 4.8.5 QVariant未解析的外部符号Visual Studio 2012,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22509195/

10-15 05:07