Я пытаюсь сгенерировать классы gsoap для системы отслеживания проблем JIRA WSDL. Я запускаю эти команды для генерации необходимых классов:
$ wsdl2h -o JIRASoap.h <url to wsdl>
$ soapcpp2 -C JIRASoap.h
Команда soapcpp2 выдает следующий вывод, но не указывает, как это исправить.
There were errors:
3 syntax errors
1 semantic error
2 warnings
Это (большинство) ошибок:
JIRASoap.h(935): syntax error
JIRASoap.h(934): Syntax error: input before ; skipped
JIRASoap.h(940): syntax error
JIRASoap.h(939): Syntax error: input before ; skipped
JIRASoap.h(942): **ERROR**: Duplicate declaration of __size (already declarared at line 937)
JIRASoap.h(947): syntax error
JIRASoap.h(946): Syntax error: input before ; skipped
Вот соответствующая часть 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 / *? * /".