2014-09-05 47 views
0

我的總體目標是創建一個小型的ONVIF客戶端,以獲取C或C++中的相機信息。在VS2013中設置WS-Discovery&gSOAP

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.cppstdsoap2.cppsoapH.hsoapStub.h的項目。從gSOAP的

threads.h wsaapi.h wsddapi.h threads.c wsaapi.c wsddapi.c添加

這並不編譯但是給:

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

我想我會非常錯誤的在這裏,我感到困惑正是一個'插件'是在gSOAP的背景下(我的這種外部庫的經驗非常有限,我沒有真正的CS正式培訓)。我只是應該做我現在正在使用wsdd文件做的事情,還是應該將它們用作soapcpp2.exe過程的一部分?如果我只想要WS-Discovery,我實際上應該使用wsdl2h.exe嗎?

我無法真正理解文檔,也不明白我應該如何才能正常工作。一些幫助將不勝感激,所以我可以開始與實際的困難部分!

回答

1

我想這個問題來自使用WS-Adressing插件(wsaapi.h/.c)和http://www.w3.org/2006/03/addressing/ws-addr.xsd模式。

gSOAP包含可由WS-discovery插件(wsddapi.h/.c)使用的wsdl2h生成的文件。

  • [GSOAP_DIR] /import/wsdd10.h爲WS-發現1.0 2005使用WS-Adressing 2004/08
  • [GSOAP_DIR] /import/wsdd.h爲WS-發現1.1 2009使用WS -Adressing 2005/08

隨着ONVIF使用WS-發現1.0,你可以使用生成發現實現:

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

接下來,你應該能夠建立你的項目,包括wsddapi.c wsaapi.c的SOAPClient。 CPP等apC.cpp

你可以從github上找到我的一些實驗ws-discovery