windows下如何編譯帶SSL/TLS的wsdl2h

gSOAP官方提供的、已編譯好的wsdl2h默認是禁用SSL/TLS的,所以不支持HTTPS下載WSDL文件。但就windows下如何編譯在網上沒找到具體案例。自己摸索,總結下來有四個步驟。

1、安裝openssl,可以選擇安裝包安裝(http://slproweb.com/products/Win32OpenSSL.html

2、在vs的項目右鍵屬性,選擇C/C++,選中預處理器,加入宏WITH_OPENSSL(啓用openssl)

接下來就是解決編譯問題

   2.1、添加頭文件包含目錄,一二條是gsoap中頭文件路徑,第三條是openssl的頭文件路徑

   

   2.2、鏈接器的輸入中加入libcrypto.lib和libssl.lib

   

   2.3、最後添加一下openssl的lib庫目錄

   

只要包含這些應該就可以生成wsdl2h。

3、生成wsdl2h後,準備生成onvif.h。輸入wsdl2h -P -x -c -s -t ./typemap.dat -o onvif.h https://www.onvif.org/ver10/network/wsdl/remotediscovery.wsdl https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl https://www.onvif.org/ver10/media/wsdl/media.wsdl

這裏我第一次生成時報錯,An error occurred while parsing schema from 'https://www.onvif.org/ver10/schema/onvif.xsd'(後續測試也報過其他xsd的錯誤)

參考https://www.genivia.com/resources.html#How_do_I_use_gSOAP_with_the_ONVIF_specifications?,修改你的typemap.dat。黑框框裏的東西,缺什麼就往typemap.dat里加什麼。

當出現這樣的結果就正確了。

4、最後利用soapcpp2生成所需文件

soapcpp2 -2 -C -L -c -x -IC:\Users\wang\Desktop\gsoap_2.8.102\gsoap-2.8\gsoap\import\ -d ./ onvif.h

 

本文主體步驟參考大佬的文章https://blog.csdn.net/benkaoya/article/details/72466827

生成後的文件在此處https://download.csdn.net/download/baidu_28572705/12399273

 

後續:

編譯時將生成的幾個文件載入項目就好

我在編譯時還遇到了兩個錯誤:

(1)、soapStub.h的32行出錯我就註釋了

(2)、gsoap duration.c報錯

在typemap.dat中加入xsd__duration = #import "custom/duration.h" | xsd__duration再重新走一遍步驟3

這一步可參考https://blog.csdn.net/wxliang1023/article/details/83788731

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章