Gsoap файлы остались @

Я собираю программу, используя gsoap с g ++ и qmake. После нескольких часов работы я получил эту ошибку от компилятора:

/usr/share/gsoap/import/ds.h:89:2: error: stray ‘@’ in program
@char*     Id;
^

Взглянув на файлы в /usr/share/gsoap/importЯ вижу много @S в этом:

часть wsse.h:

/// Element "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd":Reference of complexType "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd":ReferenceType.
/// @brief This element defines a security token reference
/// Imported element _wsse__Reference from typemap WS/WS-typemap.dat.
typedef struct _wsse__Reference
{   @char*                  URI;
@char*                  ValueType;
} _wsse__Reference;

Я не могу понять, что это такое @ в коде, и я думаю, что нет такой вещи в C ++.

Есть какой-то парень, чтобы помочь ?! Благодарю.

РЕДАКТИРОВАТЬ:
В этом есть и другие странные вещи. Еще одна ошибка компиляции:

/usr/share/gsoap/import/ds.h:289: error: expected ';' at end of member declaration
char* /*base64*/                     PgenCounter                    1; ///< Required element.
^

Взглянув на исходный файл, в определениях структуры есть много таких вещей:

/// "http://www.w3.org/2000/09/xmldsig#":DSAKeyValueType is a complexType.
struct ds__DSAKeyValueType
{
/// Element G of type "http://www.w3.org/2000/09/xmldsig#":CryptoBinary.
char* /*base64*/                     G                              0;  ///< Optional element.
/// Element Y of type "http://www.w3.org/2000/09/xmldsig#":CryptoBinary.
char* /*base64*/                     Y                              1;  ///< Required element.
/// Element J of type "http://www.w3.org/2000/09/xmldsig#":CryptoBinary.
char* /*base64*/                     J                              0;  ///< Optional element.
/// Element P of type "http://www.w3.org/2000/09/xmldsig#":CryptoBinary.
char* /*base64*/                     P                              1;  ///< Required element.
/// Element Q of type "http://www.w3.org/2000/09/xmldsig#":CryptoBinary.
char* /*base64*/                     Q                              1;  ///< Required element.
/// Element Seed of type "http://www.w3.org/2000/09/xmldsig#":CryptoBinary.
char* /*base64*/                     Seed                           1;  ///< Required element.
/// Element PgenCounter of type "http://www.w3.org/2000/09/xmldsig#":CryptoBinary.
char* /*base64*/                     PgenCounter                    1;  ///< Required element.
};

Я не знаю, как интерпретировать числа после имени свойства.


РЕЗЮМЕ ОТВЕТА:

Как уже упоминалось в mpromonet, файлы в /usr/share/gsoup/import лайк ds.h а также wsse.h не являются кодами C / C ++ и не должны компилироваться компилятором C / C ++. Это можно понять из комментария в их заголовках:

Сгенерировано с помощью: wsdl2h -cuxy -o ds.h -t WS / WS-typemap.dat WS / ds.xsd

Вместо этого они должны быть переданы инструменту, поставляемому с gsoap называется soapcpp2 как это:

soapcpp2 -I/usr/share/gsoap/import /usr/share/gsoap/import/ds.h

Проблема была в том, что я уже собирал другой файл с именем onvif.h с soapcpp2 и инструмент не может обрабатывать два файла вместе. Затем (опять же благодаря mpromonent) получается, что импорт второго файла, wsse.h в оригинальном файле onvif.h может решить проблему. Другими словами, добавив следующую строку в onvif.h

#import "wsse.h"

Поначалу мне кажется, что в Интернете не так много информации, но я нашел это руководство, которое очень полезно:

http://www.genivia.com/dev.html

0

Решение

/usr/share/gsoap/import/ds.h файл генерируется wsdl2h, В комментариях вы должны увидеть что-то вроде:

Generated with:
wsdl2h -cuxy -o ds.h -t WS/WS-typemap.dat WS/ds.xsd

Это не включение C / C ++, оно должно обрабатываться инструментом gSOAP soapcpp2 :

soapcpp2 -I/usr/share/gsoap/import /usr/share/gsoap/import/ds.h

Это сгенерирует включаемые и исходные файлы, которые вы должны скомпилировать с вашим проектом.

Для того, чтобы использовать wsse Плагин, который вы должны добавить в файл, созданный с помощью wsdl2h:

#import "wsse.h"
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]