网上与Onvif相关的资料并不多,而且大多都是在基于linux平台作开发的,遇到问题可参考的资料很有限,写此文以记录在windows上编译gSOAP的全过程,并生成支持SSL/TLS的wsdl2h工具。
配置gSOAP
安装openssl
点击下载openssl安装包,选择win32-v1.1.1g版本,按提示默认安装即可。
编译wsdl2h工具
因为gSOAP的bin目录下自带的wsdl2h工具,不支持https下载,故需编译带下载功能的wsdl2h。
首先找到wsdl2h对应的vs工程,并打开
配置工程属性页
预处理宏:WITH_OPENSSL
,openssl库文件:libcrypto.lib、libssl.lib
(方便拷贝,哈哈~);
编译源代码
直接运行是会报错的,如下:
1>d:\gsoap-2.8\gsoap\visualstudio2005\wsdl2h\wsdl2h\includes.h(41): fatal error C1083: 无法打开包括文件: “httpda.h”: No such file or directory
1> 正在生成代码...
1> 正在编译...
1> bpel.cpp
1>d:\gsoap-2.8\gsoap\visualstudio2005\wsdl2h\wsdl2h\includes.h(41): fatal error C1083: 无法打开包括文件: “httpda.h”: No such file or directory
1> 正在生成代码...
1> 正在编译...
1> mime.cpp
1>d:\gsoap-2.8\gsoap\visualstudio2005\wsdl2h\wsdl2h\includes.h(41): fatal error C1083: 无法打开包括文件: “httpda.h”: No such file or directory
1> 正在生成代码...
1> 正在编译...
1> schema.cpp
1>d:\gsoap-2.8\gsoap\visualstudio2005\wsdl2h\wsdl2h\includes.h(41): fatal error C1083: 无法打开包括文件: “httpda.h”: No such file or directory
此时不要慌,根据提示去源码中找到对应的.h和.c文件,拷贝到工程目录,并添加到项目。所需的文件有(以实际编译为主,笔者用的源码版本2.8.102):
httpda.h/cpp、smdevp.h/cpp、threads.h/cpp
至此,整个编译过程已完成,可根据需要生成win64的exe文件。
了解更多
此文只编译出可用的wsdl2h工具,想了解如何生成onvif框架代码,请移步:用gSOAP工具生成Onvif代码框架。