WS-Discovery и gSOAP настроены в VS2013

Моя основная цель — создать небольшой клиент ONVIF для получения информации о камере на языке C или C++.

gSOAP показался мне хорошим кандидатом, и первое, чего я хотел добиться, — это создать небольшое консольное приложение, в котором с помощью WS-Discovery перечислялись бы адреса множества камер, которые у меня есть в моей сети. NET-приложение.

Проблема в том, что я спотыкаюсь на первом же препятствии, и я немного сбит с толку относительно того, что я должен делать. Я начал со следующего:

wsdl2h.exe -o WSDiscovery.h WS-Discovery.wsdl http://www.w3.org/2006/03/addressing/ws-addr.xsd

soapcpp2.exe -i -C -Iimport WSDiscovery.h -d output

, я потом из получившегося soapC.cpp stdsoap2.cpp soapH.h soapStub.h сделал проект. Добавление threads.h wsaapi.h wsddapi.h threads.c wsaapi.c wsddapi.c из gsoap

Это не компилируется, но дает:

wsaapi.h(134): error C2061: syntax error : identifier 'wsa__FaultSubcodeValues'

Я думаю, что здесь я ошибаюсь, и я не совсем понимаю, что такое «плагин» в контексте gSOAP (мой опыт работы с такими внешними библиотеками крайне ограничен, и у меня нет реального формального обучения CS). Должен ли я просто делать то, что я делаю сейчас с файлами wsdd, или они должны использоваться как часть процесса soapcpp2.exe? Я действительно должен использовать wsdl2h.exe, если я просто хочу WS-Discovery?

Я не могу понять документацию и не понимаю, как я должен заставить это работать. Некоторая помощь будет очень признательна, так что я могу взломать настоящую сложную часть!


person Adwo    schedule 05.09.2014    source источник


Ответы (1)


Я предполагаю, что проблема связана с использованием плагинов WS-Adressing (wsaapi.h/.c) с http://www.w3.org/2006/03/addressing/ws-addr.xsd.

gSOAP содержит сгенерированный wsdl2h файл, который может использоваться подключаемыми модулями WS-discovery (wsddapi.h/.c).

  • [GSOAP_DIR]/import/wsdd10.h для WS-Discovery 1.0 2005, использующего WS-Adressing 2004/08
  • [GSOAP_DIR]/import/wsdd.h для WS-Discovery 1.1 2009, использующего WS-Adressing 2005/08

Поскольку ONVIF использует WS-Discovery 1.0, вы можете создать реализацию обнаружения, используя:

soapcpp2 -Cx [GSOAP_DIR]/import/wsdd10.h -I [GSOAP_DIR]/import -d output

Затем вы сможете создать свой проект, включая wsddapi.c wsaapi.c soapClient.cpp soapC.cpp.

Вы можете найти некоторые из моих экспериментов на github ws-discovery

person mpromonet    schedule 25.11.2014