2009-08-19 3 views
0

Я пытаюсь генерировать классы gsoap для системы отслеживания проблем JIRA WSDL. Я бегу эти команды, чтобы генерировать необходимые классы:проблема генерации класса gsoap

$ 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: error: ISO C++ forbids declaration of ‘ArrayOf_USCORExsd_USCOREbase64Binary’ with no type

Вот соответствующий раздел 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-файлы, я получаю «struct/*? * /» Вместо «ArrayOf_USCORExsd_USCOREbase64Binary».

ответ

0

мне удалось получить код для компиляции, удаляя все ссылки на ArrayOf_USCORExsd_USCOREbase64Binary из JIRASoap.h, в том числе самого класса и методы ns4_addAttachmentsToIssue (который принимает указатель на ArrayOf_USCORExsd_USCOREbase64Binary в качестве параметра).

Если вы нашли способ исправить ошибки выше, не удаляя ns4_addAttachmentsToIssue, пожалуйста, дайте мне знать.

Смежные вопросы