0

Android ndk と g++ を使用して、GDAL から frmts/gtiff/libtiff/tif_dirinfo.c ファイルをコンパイルしています。tiffFieldArray は、最初に静的変数として定義されます。

static TIFFFieldArray tiffFieldArray;

次に、同じファイルで使用します。

tiffFieldArray = { tfiatImage, 0, TIFFArrayCount(tiffFields), tiffFields };

しかし、エラーが発生しました:

../../frmts/gtiff/libtiff/tif_dirinfo.c:264:1: error: 'tiffFieldArray' does not name a type

なんで?

tif_dir.h の構造体定義:

#if defined(__cplusplus)
extern "C" {
#endif

...

struct _TIFFFieldArray {
        TIFFFieldArrayType type;    /* array type, will be used to determine if IFD is image and such */
        uint32 allocated_size;      /* 0 if array is constant, other if modified by future definition extension support */
        uint32 count;               /* number of elements in fields array */
        TIFFField* fields;          /* actual field info */
};
...

#if defined(__cplusplus)
}
#endif
4

1 に答える 1

1

初期化リストから変数を割り当てることはできません。

tiffFieldArray = { tfiatImage, 0, TIFFArrayCount(tiffFields), tiffFields };

この構文は、割り当てではなく、変数定義でのみ機能します。その行を次のように置き換えます。

    tiffFieldArray[0] =  tfiatImage;
    tiffFieldArray[1] =  0;
    tiffFieldArray[2] =  TIFFArrayCount(tiffFields);
    tiffFieldArray[3] =  tiffFields;

EDIT(モル情報が質問に追加された後)

tiffFieldArray配列ではなく構造体であるため、紛らわしい名前が付いています。とにかく、私が投稿した以前の解決策は、この場合は機能しません。書いてみてください:

    tiffFieldArray.type =  tfiatImage;
    tiffFieldArray.allocated_size =  0;
    tiffFieldArray.count =  TIFFArrayCount(tiffFields);
    tiffFieldArray.fields =  tiffFields;
于 2013-09-13T07:02:26.490 に答える