qmoc檔案 不能編譯MOC檔案 標頭檔案不包含

2021-10-16 13:58:17 字數 902 閱讀 8915

當編譯乙個qt/c++程式(-ddisable_mymodule)的非qt的版本,我得到這個編譯器錯誤:不能編譯moc檔案:標頭檔案不包含

src/mymodule.moc.cpp:12:2: error: #error "the header file

'mymodule.hpp' doesn't include ."

src/mymodule.moc.cpp:19:1: error: 『qt_begin_moc_namespace』 does not name a type

src/mymodule.moc.cpp:40:6: error: 『mymodule』 has not been declared

我使用的是gnu make(而不是qmake)。我的makefile為每個模組編譯兩個目標檔案,乙個直接來自.cpp原始檔,另乙個來自.moc.cpp原始檔的moc目標檔案(這是行不通的),都使用g ++。這個.moc.cpp原始檔是由moc從.hpp頭建立的(這個過程不會引發錯誤)。

有問題的標頭檔案看起來有點像這樣:

#ifndef disable_mymodule //my problem macro

#ifndef mymodule_hpp

#define mymodule_hpp

class mymodule : //...

q_object //qt problem macro

#endif

#endif

整個事情將編譯(以及後來的鏈結,執行)就好了,如果不設定我的問題巨集。如果我確實設定了它,但是注釋掉qt的問題巨集,它也會很好地編譯(構建非qt版本)。

我不完全知道,什麼moc取代q_o​​bject的,但不應該它仍然在我的disable_mymodule,因此被預處理器刪除?

2012-04-29

basic6

Qt自動生成moc檔案

命令列生成moc檔案的方式 cd c qt 4.7.1 bin moc h檔案群路徑 o 要生成的moc檔案的全路徑 例如 vs中不是用addin建立的專案,自動生成moc檔案的設定 在vs的解決方案管理器裡面,右鍵需要生成moc檔案的標頭檔案 開啟屬性視窗 常規 項型別,選擇自定義生成工具 關閉屬...

vs中結合Qt的UI檔案生成moc檔案的方法

前言 一點關於moc的小知識 qt是乙個跨平台的可提供使用者介面的應用程式開發框架,用於開發圖形使用者介面 gui 或非圖形使用者介面。qt使用標準的c 擴充套件包括訊號與插槽,是物件導向的框架,可生成特殊的元物件編譯器 meta object compiler,moc 易於擴充套件並且允許元件程式...

詳細分析Qt中moc檔案

詳細分析qt中moc檔案 一直想寫一片詳細分析qt中moc檔案的文章,今天終於是完成了。迫不及待的分享給大家,希望大家可以賞個臉,認真的看完,希望對大家的學習也有幫助。請看下面的分析qt中moc檔案的詳細內容。qt 不是使用 標準的 c 語言編寫,而是對其進行了一定程度的擴充套件。我們可以從qt增加...