在集成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) 该如何处理这些内容?
发布于 2011-07-11 02:03:06
当项目中没有编译/链接foo.h的moc_foo.cpp (它包含用Q_OBJECT标记的类)时,通常会出现这些错误。
要使Qt项目在VS中工作,请执行以下操作
使用外接程序时,您可以通过以下方式触发moc_foo.cpp的创建
确保有问题的对象的头文件出现在VS
现在,在解决方案资源管理器中的"Generated Files“文件夹中应该有两个版本的moc_multiplication_dialog.cpp。一个是"Debug“,一个是"Release”。确保其中一个文件没有被排除在构建之外。
发布于 2014-02-25 17:26:04
我今天遇到了同样的链接器错误,但这是由于一个小错误:
我手动将cpp/ui文件添加到我的项目中,但是忘记显式地将头文件添加为头文件。现在,在编译时,我收到了与上面类似的错误消息,并且在构建的调试(或发布)目录中没有生成moc_*.cpp文件。这不是一个明显的错误,qmake没有抱怨,除了链接器消息之外,我没有收到任何错误。
因此,如果任何人再次遇到相同的问题(或者犯了相同的复制错误):,请确保头文件也已添加到项目文件中
发布于 2012-07-04 12:43:16
引用自“使用Qt4进行C++图形用户界面编程”一书(第19页):为了让moc正常工作,我们必须将类定义放在一个头文件中,独立于实现文件。所以,你需要为你的类写两个文件: Multiplication_dialog.h和Multiplication_dialog.cpp!而且你必须重新创建makefile!
https://stackoverflow.com/questions/6642823
复制相似问题