使用gsoap生成onvif框架(windows)

 

1.下载gsoap

https://sourceforge.net/projects/gsoap2/

2.下载wsdl文件

https://www.onvif.org/profiles/specifications/

需要下载你需要接口的wsdl文件和 onvif.xsd, common.xsd  types.xsd

3. 新建一个文件夹

4.把如下文件

(1)goap_2.8.17\gsoap-2.8\gsoap 路径下的typemap.dat

(2)gsoap_2.8.17\gsoap-2.8\gsoap\bin\win32 路径下的wsdl2h.exe soapcpp2.exe

(3)下载的wsdl文件和xsd文件

放在新建的文件夹下

5.  打开windows平台的cmd(win+r) ,通过cmd进入到新建的文件夹下面然后执行以下命令:

其中wsdl文件为你自己文件

➣参数解析

-c : 生成c风格代码(注:后缀名还是.cpp ,但实际上是.c)

-c++:生成c++风格代码(注 : 默认是生成c++代码)

-x : 表示不生成xml 文件(注:生成的xml文件,有助于了解发送是SOAP是怎样的结构,建议不使用-x)

-l : 表示指定导入路径

-C : 表示生成客户端代码

-S : 表示生成服务端代码

-s : 不使用STL代码

-o: 生成.h文件叫什么名字

-t : 后面紧跟“typemap.dat”这个批处理文件

5. 如果出现Cannot open '../../../ver10/schema/onvif.xsd' to retrieve schema这个错误就修改wsdl文件中的./../../ver10/schema/onvif.xsd为本地路径

执行结束后生成了onvif.h文件

6.如果需要鉴权功能则需要打开onvif.h增加如下一句话

7.

    (1)将gsoap_2.8.14\gsoap-2.8\gsoap\import拷贝到同gsoapcpp2.exe文件夹下

    (2)将gsoap_2.8.14\gsoap-2.8\gsoap\custom拷贝到同gsoapcpp2.exe文件夹下

8.

执行命令:

soapcpp2 -2 -c onvif.h -I .\custom -I .\import -I .\import

 ➣参数解析

-c : 生成c风格的代码,因为默认是c++风格的代码

-2:采用SOAP1.2,和SOAP1.0版本不同,会导致搜索工具搜索不到

-I : 指定路径

-x : 不产生xml 文件(不建议是用该选项,xml在开发中具有参考意义)

执行完以上命令后,可以看见当前文件夹下出现了很多.h文件.c文件.nsmap文件.xml文件

9. 提取需要的文件

    将soapC.c , soapH.h , soapClient.c , soapClientLib.c , soapServer.c(用于服务端/设备端的开发) , soapServerLib.c(用于服务端/设备段的开发) soapStub.h , onvif.h(该文件基本已经没有用处了)拷贝到一个单独的文件夹"ONVIF"下面。

    将文件gsoap-2.8\gsoap\dom.c拷贝到ONVIF中(该文件好像没什么作用)

    将文件gsoap-2.8\gsoap\custom\duration.c拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\custom\duration.h拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\mecevp.c拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\mecevp.h拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\smdevp.c拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\smdevp.h拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\stdsoap2.h拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\stdsoap2.c拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\threads.c拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\threads.h拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\wsaapi.c拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\wsaapi.h拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\wsseapi.h拷贝到ONVIF中

    将文件gsoap-2.8\gsoap\plugin\wsseapi.c拷贝到ONVIF中

    将生成的.nsmap文件中的任意一个(因为生成的.nsmap文件中的内容都是一样的)拷贝到ONVIF中

10.框架生成结束编写main函数即可,但是编译中会报错,狠毒偶函数未定义。这些接口需要我们手动去实现,其实在onvif.h中能看到。

你可能感兴趣的:(onvif)