我不是一名普通的程序员,但却是必需的。我使用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,以防在这个过程中有些遗漏,但无济于事。
答案 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提交了一份错误报告。)