gsoap неполный тип 'struct SOAP_ENV__Header' с использованием пространства имен - PullRequest
0 голосов
/ 10 января 2019

У меня есть приложение, которое реализует связь с несколькими серверами. Я использую мыло для генерации моего запроса. Чтобы предотвратить конфликт между разными ссылками мыла, я использую пространство имен. Я сгенерировал мои файлы с

wsdl2h -t /path/to/gsoap/typemap.dat namespace1.wsdl
soapcpp2 -C -L -qnamespace1 element1.h

Как показано в документации (19.39 Как построить клиент или сервер в пространстве имен кода C ++), я также генерирую файлы с помощью env.h. Мой файл env.h пуст. soapcpp2 -penv env.h

Я добавил разные файлы в мой проект (Qt):

  • element1C.cpp
  • element1Client.cpp
  • envC.cpp
  • element1H.h
  • element1Stub.h
  • envH.h
  • envStub.h

У меня нет проблем с генерацией моего запроса. Моя проблема, когда я хочу получить параметр "fault" или "header" объекта мыла. У меня ошибка:

.. / GSoap / main.cpp: 103: 27: ошибка: доступ члена к неполному типу 'struct SOAP_ENV__Header'

.. / GSoap / main.cpp: 104: 45: ошибка: доступ члена к неполному типу 'struct SOAP_ENV__Fault'

Это мой код:

#include "elemen1H.h"
#include "envH.h"

using namespace namspace1;    

int main(int argc, char *argv[])
{   
    soap soapObj;
    soap_init(&soapObj);

    // *******  Opération 
    _ns1__Subtract inSubtractParam;
    ...
    inSubtractParam.soap = &soapObj;
    _ns1__SubtractResponse outSubtractParam;
    outSubtractParam.soap = &soapObj;

    soap_call__ns1__Subtract(&soapObj, NULL, NULL, &inSubtractParam, outSubtractParam);

    if(soapObj.fault) {
        SOAP_ENV__Fault *fault = soapObj.fault;
        ...
    }
    ...

    return 0;
}

Я не понимаю, в чем проблема. Спасибо за вашу помощь

...