2013-05-06 55 views
0

我有一個集成了一些GTK函數的庫,我決定切換到Qt。 所以我創建了一個測試cmake文件來嘗試集成Qt5,但它不起作用,因爲當我使用可執行文件動態加載庫時,我得到「未定義的符號」。在庫中使用Qt5

undefined symbol: _ZN8UIWindow16staticMetaObjectE 

我GOOGLE了很多,它似乎不是那麼簡單的任何形式的幫助,或評論將不勝感激。

Here是我使用的相關文件。

回答

2

好的,我找到了解決方案。由於我爲頭文件和源文件使用了不同的文件夾,因此我必須手動指定包含qt代碼的文件的位置。

QT5_WRAP_CPP(MOCS_HDRS ${INCLUDE_DIR}/UIWindow.h)

+0

你可以接受你自己的答案我認爲。 – 2013-05-07 13:32:54

+0

這是一個嗎?汽車的限制? – paulm 2014-04-13 22:09:56

1

該錯誤表示您的UIWindow類的MOC文件未生成或未正確構建。 Qt預計由MOC(MetaObject編譯器,IIRC)生成的類的某些元信息。
你的CMake腳本打開automoc,通常可以工作,所以我建議你看看CMake的輸出,看看它是否正在爲你的課程運行該步驟。

+0

好的。我檢查了構建文件夾,我有一個文件libtest_automoc.cpp(另外還有其他文件:libtest.so等)。但是這個文件幾乎是空的,所以mocs的生成可能會出現問題。 '/ *這個文件是自動生成的,不要編輯*/ enum some_compilers {need_more_than_nothing};' – Athanase 2013-05-06 12:29:09

+0

@Athanase - 我期望在您的構建位置也有一個moc_UIWindow.cpp文件 - 並且該文件不應該是空的,生成的代碼。 – 2013-05-06 12:38:35

+0

嗯,我不知道爲什麼......我看了一個這[post](http://www.kdab.com/using-cmake-with-qt-5./)和這個[示例](https:/ /bitbucket.org/klaim/aos_qt5/src/593c195c4c6889f6968d68fca018ef425783a063/tools/aosdesigner/CMakeLists.txt?at=wip_qt5)但它沒有幫助我。 – Athanase 2013-05-06 12:43:35