2

私は通常のプログラマーではありませんが、必要に迫られています。MacOS 10.5 で実行していた xcode プログラムへのアップグレードの一環として、tiff-4.0.3 を使用しています。

ビルドすると、次のエラー メッセージが表示されます。

「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 を使用してライブラリの内容を明らかにすることができません。

それ以外は、どこを見たらいいのか途方に暮れています。プロセスの省略に備えて、構成/作成/インストールを数回実行しましたが、役に立ちませんでした。

4

2 に答える 2

5
typedef TIFF_UINT64_T  uint64;

これは、 と呼ばれる新しいタイプを定義しuint64ます。ただし、使用している別のライブラリが を定義している可能性が非常に高いですuint64。これは非常に一般的な型名であるためです。

for をuint64コメントアウトした後にXcode に の定義を表示するように依頼して、他に定義されている場所を確認してください。#includetiff.h

uint64は通常unsigned long long(またはそのバリエーション) として定義されており、この行はuint64として定義されているため、タイプが競合する可能性がありunsigned longます。(それが正しいかどうかはコンパイラの設定に依存しますが、同じではありませんunsigned long long)。

于 2013-03-31T02:01:43.763 に答える
0

私には、libtiffこのタイプを定義する と Apple ライブラリの両方で、これは悪いコーディング プラクティスのように見えます。

uint64は、例で定義され/System/Library/Frameworks/Security.framework/Headers/cssmconfig.hています。

おそらくこれを修正する最善の方法は、代わりにパッチlibtiffを使用することです。uint64_tunsigned long

( http://bugzilla.maptools.org/show_bug.cgi?id=2464にバグ レポートを送信しました。)

于 2013-11-13T19:23:23.567 に答える