0

JIRA 課題追跡システム WSDL の gsoap クラスを生成しようとしています。次のコマンドを実行して、必要なクラスを生成します。

$ wsdl2h -o JIRASoap.h <wsdl への URL>
$ soapcpp2 -C JIRASoap.h

soapcpp2 コマンドを実行すると、次の出力が得られますが、修正方法は示されません。

エラーがありました:
3 つの構文エラー
1 セマンティック エラー
2 警告

これらは(ほとんどの)エラーです:

JIRASoap.h(935): 構文エラー
JIRASoap.h(934): 構文エラー: 前に入力; スキップした
JIRASoap.h(940): 構文エラー
JIRASoap.h(939): 構文エラー: 前に入力; スキップした

JIRASoap.h(942): **エラー**: __size の宣言が重複しています (937 行で既に宣言されています)

JIRASoap.h(947): 構文エラー
JIRASoap.h(946): 構文エラー: 前に入力; スキップした

JIRASoap.h の関連部分 (928 ~ 947 行目) は次のとおりです。

/// SOAP encoded array of xs:byte[]
class ArrayOf_USCORExsd_USCOREbase64Binary
{ public:
/// SOAP encoded array of xs:byte
class 
{ public:
/// Pointer to array of xsd__byte.
    xsd__byte                           *__ptr                         ;
/// Size of the dynamic array.
    int                                  __size                        ;
/// Offset for partially transmitted arrays (uncomment only when required).
//  int                                  __offset                      ;
    }                                   *__ptr                         ;
/// Size of the dynamic array.
    int                                  __size                        ;
/// Offset for partially transmitted arrays (uncomment only when required).
//  int                                  __offset                      ;
/// A handle to the soap struct that manages this instance (automatically set)
    struct soap                         *soap                          ;
};

プログラムをコンパイルしようとすると、次のエラーが発生します。

soapStub.h:2799: エラー: ISO C++ は型のない 'ArrayOf_USCORExsd_USCOREbase64Binary' の宣言を禁止します

WSDL の関連セクションは次のとおりです。

<complexType name="ArrayOf_xsd_base64Binary">
  <complexContent>
    <restriction base="soapenc:Array">
      <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:byte[][]"/>
    </restriction>
  </complexContent>
</complexType>

私が知る限り、ほとんどの型は soapStub.h で定義されていますが、ArrayOf_USCORExsd_USCOREbase64Binary は定義されていません。

C のみのファイルを生成すると、「ArrayOf_USCORExsd_USCOREbase64Binary」ではなく「struct /*?*/」が表示されます。

4

1 に答える 1

0

クラス自体と ns4_addAttachmentsToIssue メソッド (パラメーターとして ArrayOf_USCORExsd_USCOREbase64Binary へのポインターを受け取る) を含め、JIRASoap.h から ArrayOf_USCORExsd_USCOREbase64Binary へのすべての参照を削除することで、コードをコンパイルすることができました。

ns4_addAttachmentsToIssue を削除せずに上記のエラーを修正する方法を見つけた場合は、お知らせください。

于 2009-08-19T19:26:18.513 に答える