2013-07-08 2 views
3

Я использую Visual Studio и GSOAP 2.8.15 для создания клиента C++ Onvif.Создание клиентского приложения с C++, GSOAP и Onvif

Я запускать эти команды, чтобы создать исходный код:

> wsdl2h -P -x -o onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl 

> soapcpp2 -i -C -IC:\gsoap-2.8.15\gsoap;C:\gsoap-2.8.15\gsoap\import onvif.h 

Затем я положил эти файлы в моем решении MSVC:

duration.h/.cpp 
soapH.h/soapC.cpp 
stdsoap2.h/.cpp 

Я добавил этот файл в каталоге, но не к решению :

soapStub.h 

Я добавил это как #define к компиляции:

WITH_NONAMESPACES 

Я добавил это включить в основной файл моей программы:

#include "soapDeviceBindingProxy.h" 

Это дает мне DeviceBindingProxy объект, но я не знаю, что делать с ним. Я хочу подключиться к камере Onvif с известным IP-адресом и запросить информацию об устройстве.

Примеры GSOAP не относятся к Onvif, а примеры псевдокода Onvif не относятся к GSOAP. Любая помощь будет оценена по достоинству.

+1

Прошло много времени с тех пор, как этот вопрос был задан, но кто-то может найти это полезным: https://github.com/tonyhu/gsoap-onvif/blob/master/main.cpp. Это действительно просто код, описывающий то, что @ Daddy32 объяснил ниже, и должен помочь людям начать работу. – Zaxter

ответ

1

Просто откройте определение объекта DeviceBindingProxy (или даже лучше: запустите doxygen в файлах сгенерированных gSoap и получите удобную HTML-документацию).

Он должен содержать отдельный метод для каждого действия, предоставляемого службой, именованное точно в соответствии с определением службы.

Каждый из методов должен принимать два параметра: запрос & ответ (их типы являются указателями на gSoap-сгенерированные структуры: подробнее см. Их определение/документацию).

Все, что вам нужно сделать, это создать экземпляры запроса & ответа, заполнить запрос, передать указатели на оба метода и собрать данные из (уже разобранного) ответа.