1 gSOAP工具下载地址;
下载地址:https://sourceforge.net/projects/gsoap2/
我下载的最新的gSOAP
2搜集需要的文件
1、创建目录 F:\onvifFrameworkc
2、将上面下载的gsoap下的plugin,import,custom复制到 F:\onvifFrameworkc
3、将gsoap\bin\win32 下的 wsdl2h.exe和soapcpp2.exe复制到 F:\onvifFrameworkc目录下
4、将gsoap下的dom.cpp,stdsoap2.h,stdsoap2.cpp和typemap.dat,复制到 F:\onvifFrameworkc目录下
以后的所有操作都在 F:\onvifFrameworkc进行
3修改一些文件
1、防止出现LONG64的错误和SOAP_TYPE_xsd_duration未定义的错误,需要在typemap.dat中
2、防止SOAP_ENC_Fault重复错误,修改 F:\onvifFrameworkc\import下的wsa5.h,修改SOAP_ENC_Fault的名字
4、生成onvif.h文件
(1)需要的wsdl文件 和 xsd文件http,每个用空格隔开
wsdl2h -x -t typemap.dat -o onvif.h http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl http://www.onvif.org/onvif/ver10/search.wsdl http://www.onvif.org/onvif/ver10/display.wsdl http://www.onvif.org/onvif/ver10/deviceio.wsdl http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl http://www.onvif.org/onvif/ver10/receiver.wsdl http://www.onvif.org/onvif/ver10/recording.wsdl
在cmd下,输入命令cd /d F:\onvifFrameworkC再输入上边这个命令得到onvif.h
(3)因鉴权需要,修改onvif.h头文件,在onvif.h中添加
#import “wsse.h”
此时F:\onvifFrameworkC下有这些文件
5.使用gSOAP生成onvif开发框架代码
soapcpp2 命令如下 接着在cmd下输入如下 命令
![在这里插入图片描述](https://img-blog.csdnimg.cn/acddf0e2cba84c068659a75ca5576adc.png)
****此时F:\onvifFrameworkC下有这些文件****
![在这里插入图片描述](https://img-blog.csdnimg.cn/667908f294a94f03b313525c03b81826.png)
****6.创建新的目录F:\onvifApi放onvif开发框架的代码****
(1)gSOAP生成的文件中提取以下几个放到F:\onvifApi
![在这里插入图片描述](https://img-blog.csdnimg.cn/7a8ee2cd4f264f2eb976b8a31fff3ba4.png)
(2)再在gsoap文件提取一下文件
dom.c
dom.h
duration.cpp
duration.h
chrono_duration.h
chrono_duration.cpp
mecevp.c
mecevp.h
smdevp.c
smdevp.h
stdsoap2.c
stdsoap2.h
threads.c
threads.h
wsa5.h
wsaapi.c
wsaapi.h
wsseapi.c
wsseapi.h
struct_timeval.h
struct_timeval.c
*(3)把里边所有的c改为cpp。有的文件既有C也有CPP,在F:\onvifApi中只保留cpp
修改stdsoap2.cpp文件,添加#include "wsdd.nsmap"*
![在这里插入图片描述](https://img-blog.csdnimg.cn/ea4a1960aa8741cbbac75c029311c634.png)
在soapStub.h文件中,列出了WEB服务的所有接口(Client-Side Call Stub Functions),我们的应用程序通过调用这些接口就成了,至于SOAP协议整个过程怎么实现的,都在soapC.c和soapClient.c中。
**7验证**
在VS2019中创建新工程,添加目录,并把F:\onvifApi所有文件加入到工程。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e52bfdda63f04034b05763f725a85c66.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/0918297d9dcd49588938c32e5e893576.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/65ff06a6ed2542cc9c688a403db5566c.png)
链接器的输入添加libcrypto.lib,libssl.lib
![在这里插入图片描述](https://img-blog.csdnimg.cn/4c5fde80c677481a87f847600e6aef17.png)
把F:/onvifApi下的所有文件添加 到工程中运用
![在这里插入图片描述](https://img-blog.csdnimg.cn/558920e1737447c2a3bf1e0cb3c20f5f.png)
主要借鉴 https://blog.csdn.net/asdasfdgdhh/article/details/115875885