2010-08-25 25 views
4

我試圖建立在Mac OSX上一個項目,它給了我一個神祕的錯誤:Qt moc錯誤1 - 這是什麼意思?

[moc_droparea.cpp] Error 1

droparea.cpp是(顯然)在項目中的文件。我檢查了它存在於項目目錄中並沒有損壞。文件moc_droparea.cpp在出現此錯誤後不會顯示在build文件夾中,所以我認爲它無法以任何原因構建,但錯誤太模糊,無法幫助我弄清楚發生了什麼。有誰能幫我弄清楚這意味着什麼嗎?

+0

你介意發佈droparea.h文件,該文件在被moc'ed時給出錯誤嗎? – Fred 2010-08-25 19:02:30

+0

不幸的是,我實際上不能發佈任何源代碼,這個項目是爲了工作。但是,.h文件與QT創建者附帶的拖放區示例中的文件幾乎完全相同。 – CoutPotato 2010-08-25 19:12:15

+0

附加說明:嘗試在模板類中使用Q_OBJECT時也會發生此錯誤。如何在模板類中使用信號/插槽功能描述在:http://stackoverflow.com/questions/4397478/qt-templated-q-object-class – 2017-05-13 19:50:39

回答

4

該解決方案過於簡單。我有一個文件夾結構,將文件路徑中的空格(非法字符)。我把下劃線,而不是空格,它建立好。我認爲moc預處理器可以處理文件名中的空格,但顯然不是。我感到愚蠢,但至少現在問題解決了。

希望這個解決方案可以幫助別人。

+0

我以前有過這個問題。你能接受你自己的答案嗎?這將從未答覆的列表中刪除它。 – 2010-08-28 02:39:34

0

這可能是因爲很多事情我猜 - 我有類似的情況,我忘記刪除.qrc文件中不存在的條目了。

因此,請檢查您的資源路徑。

1

點擊「編譯輸出」,向上滾動並點擊紅線。

在我的情況下,紅線說:你不能在私人槽中定義一個整數值。

在qt創建器窗口的「進度詳情」部分,有一個名爲「編譯輸出」(按鈕編號4)的按鈕。錯誤在那裏用紅色字體解釋。點擊它並向上滾動。

0

由於引用了以句點開頭的文件名的資源文件(.qrc),所以發生同樣的錯誤1。當我從文件名中刪除這段時間後,再次編譯。有趣的是,這個錯誤只發生在使用Clang編譯器的Mac OSX下。在使用gcc編譯器的Windows上,文件名不會引發錯誤。

也許「[源文件名]錯誤1」消息通常意味着由於文件路徑中的意外字符而無法找到文件。

+0

我認爲這應該是一個評論,而不是一個答案 – user3402754 2017-04-26 21:23:23

+0

對。但我不允許評論(評分太低)。但是,再次,*這*是一個評論。我歡迎我的升級。 – 2017-04-27 22:35:40