Qt metaObject链接器问题该怎么解决?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (99)

在将Qt与Vs集成并试图编译.pro文件后,我收到以下错误:

Error   9   error LNK2001: unresolved external symbol "public: virtual int __thiscall Multiplication_dialog::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@Multiplication_dialog@@UAEHW4Call@QMetaObject@@HPAPAX@Z)     

Error   7   error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall Multiplication_dialog::metaObject(void)const " (?metaObject@Multiplication_dialog@@UBEPBUQMetaObject@@XZ)  


    Error   8   error LNK2001: unresolved external symbol "public: virtual void * __thiscall Multiplication_dialog::qt_metacast(char const *)" (?qt_metacast@Multiplication_dialog@@UAEPAXPBD@Z)    

这个错误我该怎么做?

提问于
用户回答回答于

如果任何人再次遇到同样的问题(或使相同的副本和PASE错误): 确保头文件也已添加到您的项目文件

用户回答回答于

为了让你的Qt项目能够在VS中工作:

  1. 用'qmake -tp vc'或者创建一个.vcproj文件
  2. 使用Qt Visual Studio加载项可以自动为你处理所有的moc魔术(虽然不支持VC Express版本)。

使用加载项时,可以通过触发创建moc_foo.cpp:

  • 确保有问题的对象的头文件出现在VS项目中
  • 项目清单
  • 从Multiplication_dialog的头文件中移除所有的Q_OBJECT事件。
  • 保存文件
  • 再次添加Q_OBJECT
  • 保存文件

扫码关注云+社区

领取腾讯云代金券