2012-09-19 37 views
3

我試圖使用Q_OBJECT宏在我的Visual Studio 2010旗艦項目,它給了我無法解析的外部錯誤:在VS2010項目中使用Q_OBJECT給無法解析的外部

1>Application.obj : error LNK2001: unresolved external symbol "public: virtual int __thiscall MyButton::qt_metacall(enum QMetaObject::Call,int,void * *)" ([email protected]@@[email protected]@@[email protected]) 
1>Application.obj : error LNK2001: unresolved external symbol "public: virtual void * __thiscall MyButton::qt_metacast(char const *)" ([email protected]@@[email protected]) 
1>Application.obj : error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall MyButton::metaObject(void)const " ([email protected]@@[email protected]@XZ) 

我有一個類似的項目使用QMaker,並通過乾淨的項目和重新運行qmake來解決它。事情是,VS中沒有「Qmake」按鈕!

我已經閱讀了幾篇文章,比如this one,並完成了他們告訴我的所有事情。雖然它沒有真正的幫助,因爲我已經有一個.cpp和幾個頭文件的現有項目,我想避免創建一個.pro文件並將代碼移入它。

我已經安裝了VS Qt插件,它給了我VS面板上新的酷「Qt」按鈕,雖然沒有幫助未解決的外部(可能我不知道如何正確使用它)。

我在VS通過自定義生成工具跑了商務部對我Application.h文件(有Q_OBJECT唯一的一個),但仍然沒有幫助:

C:\Utilities\QtSDK\Desktop\Qt\4.8.1\msvc2010\bin\moc Application.h -o tmp\moc\moc_Application.cpp 

什麼可能導致我的問題我該如何解決它?

回答

5

我猜你忘了將MOC生成的文件(本例中爲moc_Application.cpp)添加到Visual Studio項目中。你必須這樣做,以確保它建成。我很確定這應該解決你看到的鏈接器錯誤。

+0

非常感謝你,它的工作! – user1514665

相關問題