Qt Q_OBJECT在Visual Studio 2010中创建链接器错误

时间:2012-08-05 04:52:35

标签: visual-studio-2010 qt linker lnk2001

我正在尝试让Qt与Visual Studio 2010一起使用。我已经构建了一个可以在调试器中运行的工作程序。但是,当我尝试将Q_OBJECT宏添加到我的类时,它会生成一堆链接器错误。

1>------ Build started: Project: qt_poop, Configuration: Debug Win32 ------
1>Build started 2012/08/05 12:58:56.
1>InitializeBuildStatus:
1>  Creating "Debug\qt_poop.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>ClCompile:
1>  GLViewer.cpp
1>  Window.cpp
1>  main.cpp
1>  Generating Code...
1>Link:
1>  LINK : c:\Users\abral\Documents\Visual Studio 2010\Projects\qt_poop\Win32\Debug\\qt_poop.exe not found or not built by the last incremental link; performing full link
1>GLViewer.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall GLViewer::metaObject(void)const " (?metaObject@GLViewer@@UBEPBUQMetaObject@@XZ)
1>GLViewer.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall GLViewer::qt_metacast(char const *)" (?qt_metacast@GLViewer@@UAEPAXPBD@Z)
1>GLViewer.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall GLViewer::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@GLViewer@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
1>c:\Users\abral\Documents\Visual Studio 2010\Projects\qt_poop\Win32\Debug\\qt_poop.exe : fatal error LNK1120: 3 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:07.50
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我已经看到其他人提出了一些类似的问题,它似乎与编译器和moc有关,还有一些其他非常复杂的技术问题,我的初学者大脑还不能理解。此外,很多人似乎都面向使用命令行来配置编译器的人,但是我正在使用VS而且我真的想保持这种方式(基本上我只是希望能够按下绿色箭头,看看我的程序 - 这就是全部)。所以...如果有人能够以尽可能简单的方式向我解释如何配置Visual Studio来做任何链接或编译或者为了实现这一点而需要做的事情,我将永远感激。

2 个答案:

答案 0 :(得分:0)

这是一个用VS2010编译Qt的链接 http://thomasstockx.blogspot.in/2011/03/qt-472-in-visual-studio-2010.html
按照他说的所有步骤,这可能有助于您解决问题。谢谢,

答案 1 :(得分:0)

如果您将Q_OBJECT添加到类中,请确保运行qmake!我和Creator一起工作过,但是在我尝试使用Q_OBJECT宏编译一些包含扩展QObject的类的代码之前,我没有那么做,我有非常奇怪的错误。