2013-03-31 37 views
1

我不是一個普通的程序員,但是有必要。我現在用的TIFF-4.0.3作爲一個Xcode程序升級的一部分我的MacOS 10.5xcode構建錯誤:「'uint64'的衝突類型'對我來說沒有任何意義

下運行時我建,我得到錯誤信息:

Conflicting types for 'uint64'

該行被標記位於tiff.h中記載:

typedef TIFF_UINT64_T uint64; 

唯一的另一條線,我可以與TIFF_UINT64_T項目找到位於tiffconf.h中記載:

/* Unsigned 64-bit type */ 
#define TIFF_UINT64_T unsigned long 

無論如何,這個錯誤對我來說毫無意義。有很多類似的定義,其中沒有一個標記相同的錯誤。庫libtiff.la有可能存在衝突的定義嗎?有什麼方法可以檢查嗎?我無法讓NM或者其他人知道圖書館裏的東西。

除此之外,我在哪裏尋找損失。我已經做了多次配置/製作/安裝,以防在過程中有些遺漏,但無濟於事。

+0

檢查MacTypes.h – CodaFi

回答

4
typedef TIFF_UINT64_T uint64; 

這定義了一種叫做uint64的新類型。但是,很可能您正在使用的另一個庫定義爲uint64,因爲它是相當常見的類型名稱。

試着要求Xcode在爲tiff.h註釋掉#include之後向您顯示uint64的定義,以查看它在哪裏定義。

可能發生衝突的類型,因爲uint64通常定義爲unsigned long long(或其中的一些變化),並且此行將uint64定義爲unsigned long。 (是否正確取決於編譯器設置,但與unsigned long long不一樣)。

0

對我來說,這看起來像libtiff和定義這種類型的Apple庫中的不良編碼實踐。

例如,在/System/Library/Frameworks/Security.framework/Headers/cssmconfig.h中定義了類型uint64

解決此問題的最佳方法可能是修補libtiff以使用uint64_t而不是unsigned long

(我向http://bugzilla.maptools.org/show_bug.cgi?id=2464提交了一個錯誤報告。)