2016-06-22 2 views
1

Я пытаюсь реализовать протокол onvif со стороны камеры (сервера) с помощью микроконтроллера без какой-либо реализации, я пытаюсь wsdl-файлы сайта onvif (например, http://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl) для генерации заголовков и файлов реализации.Ошибка использования soapcpp2 с файлом заголовка ONVIF, сгенерированным с помощью wsdl2h (GSOAP с linux)

Так что я использовал gsoap с командой wsdl2h -c -o devicemgmt.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl, и это создает мне devicemgmt.h, тогда, когда я soapcpp2 devicemgmt.h меня

`devicemgmt.h(12328): syntax error 
devicemgmt.h(12327): Syntax error: declaration expected 
devicemgmt.h(12330): syntax error 
devicemgmt.h(12329): Syntax error: declaration expected 
devicemgmt.h(12332): syntax error 
devicemgmt.h(12331): Syntax error: declaration expected 
devicemgmt.h(12333): syntax error 
devicemgmt.h(12339): Syntax error: declaration expected 
devicemgmt.h(12342): syntax error 
devicemgmt.h(12341): Syntax error: input before ; skipped 
devicemgmt.h(12371): syntax error 
devicemgmt.h(12370): Syntax error: declaration expected 
devicemgmt.h(12373): syntax error 
devicemgmt.h(12372): Syntax error: declaration expected 
devicemgmt.h(12375): syntax error 
devicemgmt.h(12374): Syntax error: declaration expected 
devicemgmt.h(12377): syntax error 
devicemgmt.h(12376): Syntax error: declaration expected 
devicemgmt.h(12415): syntax error 
devicemgmt.h(12414): Syntax error: declaration expected 
devicemgmt.h(12417): syntax error 
devicemgmt.h(12416): Syntax error: declaration expected 
Critical error: too many syntactic errors, bailing out` 

Вот oportion заголовочного файла, где ошибки происходя :

`/// "http://docs.oasis-open.org/wsn/b-2":NotificationMessageHolderType is a complexType. 
struct ns4__NotificationMessageHolderType 
{ 
/// Element reference "http://docs.oasis-open.org/wsn/b-2":SubscriptionReference. 
///JUST BELOW THATS THE LINE 12328 WHERE THE ERROR IS 
ns1__EndpointReferenceType*   SubscriptionReference   0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":Topic. 
     struct ns4__TopicExpressionType*  Topic       0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":ProducerReference. 
     ns1__EndpointReferenceType*   ProducerReference    0; ///< Optional element. 
     struct _ns4__NotificationMessageHolderType_Message 
     { 
    /// TODO: <any namespace="##any" minOccurs="1" maxOccurs="1"> 
    /// TODO: Schema extensibility is user-definable. 
    ///  Consult the protocol documentation to change or insert declarations. 
    ///  Use wsdl2h option -x to remove this element. 
    ///  Use wsdl2h option -d for xsd__anyType DOM (soap_dom_element). 
     _XML         __any       0; ///< Catch any element content in XML string. 
     }         Message      1; ///< Required element. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":NotificationProducerRP 

    /// "http://docs.oasis-open.org/wsn/b-2":NotificationProducerRP is a complexType. 
    struct _ns4__NotificationProducerRP 
    { 
    /// Size of the dynamic array of struct ns4__TopicExpressionType* is 0..unbounded 
     $int         __sizeTopicExpression   0; 
    /// Array struct ns4__TopicExpressionType* of length 0..unbounded 
     struct ns4__TopicExpressionType*  TopicExpression    0; 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":FixedTopicSet. 
     enum xsd__boolean*     FixedTopicSet     0; ///< Optional element. 
    /// Size of the dynamic array of xsd__anyURI* is 0..unbounded 
     $int         __sizeTopicExpressionDialect 0; 
    /// Array xsd__anyURI* of length 0..unbounded 
     xsd__anyURI*       TopicExpressionDialect   0; 
    /// Element reference "http://docs.oasis-open.org/wsn/t-1":TopicSet. 
     struct ns7__TopicSetType*   ns7__TopicSet     0; ///< Optional element. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":SubscriptionManagerRP 

    /// "http://docs.oasis-open.org/wsn/b-2":SubscriptionManagerRP is a complexType. 
    struct _ns4__SubscriptionManagerRP 
    { 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":ConsumerReference. 
     ns1__EndpointReferenceType   ConsumerReference    1; ///< Required element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":Filter. 
     struct ns4__FilterType*    Filter       0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":SubscriptionPolicy. 
     struct ns4__SubscriptionPolicyType* SubscriptionPolicy    0; ///< Optional element. 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2":CreationTime. 
     time_t*        CreationTime     0; ///< Optional element. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":Notify 

    /// "http://docs.oasis-open.org/wsn/b-2":Notify is a complexType. 
    struct _ns4__Notify 
    { 
    /// Size of the dynamic array of struct ns4__NotificationMessageHolderType* is 1..unbounded 
     $int         __sizeNotificationMessage  1; 
    /// Array struct ns4__NotificationMessageHolderType* of length 1..unbounded 
     struct ns4__NotificationMessageHolderType* NotificationMessage   1; 
    /// TODO: <any namespace="##other" minOccurs="0" maxOccurs="unbounded"> 
    /// TODO: Schema extensibility is user-definable. 
    ///  Consult the protocol documentation to change or insert declarations. 
    ///  Use wsdl2h option -x to remove this element. 
    ///  Use wsdl2h option -d for xsd__anyType DOM (soap_dom_element). 
    /// Size of the array of XML or DOM nodes is 0..unbounded 
     $int         __size      0; 
     _XML         __any       0; ///< Catch any element content in XML string. 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":UseRaw 

    /// "http://docs.oasis-open.org/wsn/b-2":UseRaw is a complexType. 
    struct _ns4__UseRaw 
    { 
    }; 


    /// Top-level root element "http://docs.oasis-open.org/wsn/b-2":Subscribe 

    /// "http://docs.oasis-open.org/wsn/b-2":Subscribe is a complexType. 
    struct _ns4__Subscribe 
    { 
    /// Element ConsumerReference of type "http://www.w3.org/2005/08/addressing":EndpointReferenceType. 
     ns1__EndpointReferenceType   ConsumerReference    1; ///< Required element. 
    /// Element Filter of type "http://docs.oasis-open.org/wsn/b-2":FilterType. 
     struct ns4__FilterType*    Filter       0; ///< Optional element. ` 

Может кто-нибудь помочь мне, пожалуйста? Я не знаю, что делать, в чем проблема с ns1__EndpointReferenceType и где эта ошибка синтаксиса? что я должен добавить в заголовки Onvif, если есть что добавить?

+0

Вероятно проблемы с typemap.dat, потому что я запускать команды успешно. Вы искали [gSOAP FAQ] (http://www.genivia.com/resources.html#How_do_I_use_gSOAP_with_the_ONVIF_specifications?)? – mpromonet

+0

Привет, я просто просмотрел его, и я изменил файл typemap.dat, добавив файлы, которых здесь нет, но это всегда безуспешно. Я также пробовал команды, которые предлагаются в FAQ по gSOAP, но они не работают, можете ли вы помочь мне понять, почему? – samyh

+0

Когда я добавляю команды FAQ, я получаю пустой заголовок, он говорит, что он не может открыть typemap.dat – samyh

ответ

0

Обязательно используйте typemap.dat, которые поставляются с дистрибутивом gsoap 2.8.x. Этот файл включает в себя typemap.dat привязок ONVIF, но и WS-Addressing wsa5.h связывания для EndpointReference элемента:

#import "wsa5.h" 
... 
class wsnt__NotificationMessageHolderType 
{ public: 
    /// Element reference "http://docs.oasis-open.org/wsn/b-2:""http://docs.oasis-open.org/wsn/b-2":SubscriptionReference. 
    wsa5__EndpointReferenceType*   SubscriptionReference   0;