Работаю с камерой Axis M1054 использую onvif для взаимодействия с ней. devicemgmt.wsdl перегнал с помощью gsoap в с++ (STL) прокси. C помошью сниффера проследил отправку пакетов с компа на камеру и обратно.Всю в порядке.Происходит вылет программы когда приходит ответ от камеры , точнее сказать , при разборе ответа.
Функция создания запроса на камеру
Code:
void Dialog::on_pushButton_interview_clicked()
{
    struct soap *soap1 = soap_new(); 
    
    _ns1__GetCapabilities *ns1__GetCapabilities = new _ns1__GetCapabilities;
    ns1__GetCapabilities->soap = soap1;

    _ns1__GetCapabilitiesResponse  *ns1__GetCapabilitiesResponse = new _ns1__GetCapabilitiesResponse;
    ns1__GetCapabilitiesResponse ->soap = soap1;
    
    ns2__CapabilityCategory CapabilityCategory = ns2__CapabilityCategory__All;
    ns1__GetCapabilities->Category.push_back(CapabilityCategory);

    DeviceBindingProxy DeviceBinding;
    DeviceBinding.GetCapabilities("http://192.168.0.80/onvif/device_service", NULL, ns1__GetCapabilities, ns1__GetCapabilitiesResponse);

    if(ns1__GetCapabilitiesResponse == NULL)
    {
        return;
    }
    
}
Функция разбора ответа
Code:
SOAP_FMAC3 _ns1__GetCapabilitiesResponse * SOAP_FMAC4 soap_in__ns1__GetCapabilitiesResponse(struct soap *soap, const char *tag, _ns1__GetCapabilitiesResponse *a, const char *type)
{
	(void)type; /* appease -Wall -Werror */
	if (soap_element_begin_in(soap, tag, 0, NULL))
		return NULL;
	a = (_ns1__GetCapabilitiesResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE__ns1__GetCapabilitiesResponse, sizeof(_ns1__GetCapabilitiesResponse), soap->type, soap->arrayType);
	if (!a)
		return NULL;
	if (soap->alloced)
	{	a->soap_default(soap);
		if (soap->clist->type != SOAP_TYPE__ns1__GetCapabilitiesResponse)//вылет программы происходит здесь!!!!!!!!!!!!!!!!!!!!!!!!!
		{	soap_revert(soap);
			*soap->id = '\0';
			return (_ns1__GetCapabilitiesResponse *)a->soap_in(soap, tag, type);
		}
	}
	size_t soap_flag_Capabilities1 = 1;
	if (soap->body && !*soap->href)
	{
		for (;;)
		{	soap->error = SOAP_TAG_MISMATCH;
			if (soap_flag_Capabilities1 && soap->error == SOAP_TAG_MISMATCH)
				if (soap_in_PointerTons2__Capabilities(soap, "ns1:Capabilities", &(a->_ns1__GetCapabilitiesResponse::Capabilities), "ns2:Capabilities"))
				{	soap_flag_Capabilities1--;
					continue;
				}
			/* transient soap skipped */
			soap_check_result(soap, "ns1:Capabilities");
			if (soap->error == SOAP_TAG_MISMATCH)
				soap->error = soap_ignore_element(soap);
			if (soap->error == SOAP_NO_TAG)
				break;
			if (soap->error)
				return NULL;
		}
		if (soap_element_end_in(soap, tag))
			return NULL;
	}
	else
	{	a = (_ns1__GetCapabilitiesResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE__ns1__GetCapabilitiesResponse, 0, sizeof(_ns1__GetCapabilitiesResponse), 0, soap_copy__ns1__GetCapabilitiesResponse);
		if (soap->body && soap_element_end_in(soap, tag))
			return NULL;
	}
	if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Capabilities1 > 0))
	{	soap->error = SOAP_OCCURS;
		return NULL;
	}
	return a;
}
Помогите в чем проблема????!!!