sma*_*llB 19 c++ qt visual-studio-2010
在将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)
Run Code Online (Sandbox Code Playgroud)
怎么办?
小智 17
当您的项目中没有编译/链接foo.h的moc_foo.cpp(包含标有Q_OBJECT的类)时,您通常会收到这些错误.
要让Qt项目在VS中工作,你要么
使用加载项时,可以触发创建moc_foo.cpp
现在,您应该在解决方案资源管理器的"生成的文件"文件夹中有两个版本的moc_multiplication_dialog.cpp.一个用于"调试",一个用于"释放".确保未从构建中排除其中一个文件.
mic*_*l_s 15
我今天遇到了相同的链接器错误,但这是由于一个小滑:
我手动将cpp/ui文件添加到我的项目中,但忘记将头文件显式添加为头文件.现在编译时我收到了类似的错误信息,并且在构建的调试(或发布)目录中没有生成moc _*.cpp文件.这不是一个明显的错误,qmake没有抱怨,除了链接器消息我没有错误.
因此,如果任何人再次遇到相同的问题(或使相同的副本和错误): 确保头文件也已添加到您的项目文件
小智 6
Citate来自"使用Qt 4进行C++ GUI编程"(第19页):要使moc正常工作,我们必须将类定义放在头文件中,与实现文件分开.因此,您需要为您的类编写2个文件:Multiplication_dialog.h和Multiplication_dialog.cpp!你必须重新创建makefile!
| 归档时间: |
|
| 查看次数: |
30551 次 |
| 最近记录: |