2014-01-21 31 views
0

我正在接管一個需要使用QT Creator和CImg的項目,但它不會在我的機器上生成。QT + CImg不會建立在OSX上10.9

/Users/vikkosmi/Qt/5.2.0/clang_64/lib/QtCore.framework/Headers/qvariant.h:132: error: expected '}' 
    Bool = QMetaType::Bool, 
    ^

這個錯誤和其他類似錯誤在我構建時會一直出現。它來自Qt Core。

使用cimg從Windows平臺遷移到osx時是否需要重寫?據我所知的代碼應該是便攜式..

我試圖重新安裝庫,安裝XQuarts,添加庫和包括項目文件的路徑,但仍然是相同的問題:(在此先感謝您的幫助!)

回答

0

你在建設如果你正在構建Qt的,那麼你有把它弄壞了一些本地修改 - 如果你正在創建一個使用Qt一些代碼開始新源

,那麼問題出在該代碼,而不是在Qt中,這個問題的味道在於某事已經定義了一個干擾QVariant的代碼的Bool

發生這種情況的文件不是qvariant.h。它是你的一些.cpp文件 - 查看錯誤信息,它們將包含類似「編譯yourfile.cpp時」的內容。在那個文件中,你需要把#include <QVariant>作爲第一行。這應該暫時解決問題。

您應該在代碼中搜索Bool並修復全局名稱空間污染。你的代碼被破壞了,毫無疑問,我想。

+0

感謝您的輸入,我在整個項目中爲「Bool」做了一個搜索,它沒有在任何地方列出。我會看看如果在頂部放置將解決任何問題(因爲到處都包含多個圖形庫)。代碼是一團糟,需要清理,但我寧願讓它工作,所以我不會讓它變得更糟:) – Vikko

0

X11庫(由CImg默認使用)定義爲Bool。 在您使用Qt時,您可能不想使用CImg的顯示功能,所以我建議您在編譯時通過定義宏cimg_display=0來停用它。 CImg不會嘗試包含X11標題,它可能會解決您的問題。

+0

CImg用於渲染處理過的圖片,而Qt用於渲染命令界面來適應設置。恐怕cimg_display = 0目前不是一個選項:( – Vikko

+0

@Vikko它只是一個包含順序問題,只要'QVariant'首先它就可以工作,X11頭文件是braindead,Bool應該是typedef'd –

+0

我在main.cpp的第一行嘗試了包括QVariant,這導致了更多的錯誤,我認爲整個項目與OS/X不兼容,所以我將CImg從項目中移除,並且會尋找一種不需要它的替代方法。 – Vikko