xcode构建错误:“'uint64'的冲突类型”对我来说毫无意义

时间:2013-03-31 01:57:51

标签: c xcode

我不是一名普通的程序员,但却是必需的。我使用tiff-4.0.3作为升级到我在MacOS 10.5下运行的xcode程序的一部分

当我构建时,我收到错误消息:

  

'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或otool显示库中的内容。

除此之外,我在哪里看都不知所措。我已经多次完成了configure / make / install,以防在这个过程中有些遗漏,但无济于事。

2 个答案:

答案 0 :(得分:5)

typedef TIFF_UINT64_T  uint64;

这定义了一个名为uint64的新类型。但是,您使用的另一个库很可能定义uint64,因为它是一个非常常见的类型名称。

在为uint64评论#include之后,请尝试让Xcode向您显示tiff.h的定义,以了解其定义的位置。

这些类型可能会发生冲突,因为uint64通常定义为unsigned long long(或其中的某些变体),此行将uint64定义为unsigned long。 (这是否正确取决于编译器设置,但它与unsigned long long不同。)

答案 1 :(得分:0)

对我来说,这似乎是libtiff和定义此类型的Apple库中的错误编码实践。

uint64类型在/System/Library/Frameworks/Security.framework/Headers/cssmconfig.h中定义。

解决此问题的最佳方法可能是修补libtiff以使用uint64_t代替unsigned long

(我向http://bugzilla.maptools.org/show_bug.cgi?id=2464提交了一份错误报告。)