编辑: lqwzrs | 2019-07-11 |
168.16.100,用户名lab上yangming下的onvif_test文件夹拷贝下来. 找到该文件夹包含一个压缩文件 解压后 gSOAP_2.8.15 将ONVIF提供的WSDL描述编译为C++能够识别的文件.完成ONVIF服务端和客户端的编程. 我没要使用gSOAP编译 WSDL -〉 c/c++文件.利用c/c++文件来完成onvif的接口. 我们现在使用的是2.8.15的版本 WSDL ONVIF的webservices的接口描述文件. 下载
网址:http://www.onvif.org/onvif/ver20/util/operationIndex.html Openssl 剩下三个是openssl需要的头文件和库文件,在整个开发过程中需要用到. 拿到上述文件后,我们就已经获取到了开发ONVIF所需要的资源.我们进入到开发阶段. 开发阶段 开发阶段要分为如下几步: 编译gSOAP_2.8.15 生成头文件 生成c/c++文件 编译soap文件 开始onvif 的第一个程序-发现 第一步编译gSOAP_2.8.15 我们编译gSOAP_2.8.15的目的是生成两个文件(如下图),这两个文件要在第二,第三步骤中使用.我们编译和开发的操作系统使用的linux.本人使用的 是ubuntu10.04版本. 进入ubuntu操作系统.在/HOME/用户/ 下建立onvif_test文件夹.然后在建一个"wsdl"文件夹 将资源gsoap_2.8.15和openssl文件夹及 libcrypto.a和libssl.a文件拷贝到WSDL文件夹中. 我们开始编译: 第一步:打开终端进入到 gsoap_2.8.15目录. 第二步 :修改配置选项,这个工作 主要是 设置gsoap关联 openssl及将gsoap生成的 文件放置到固定目录中 .我们使用 如下命令来设置 "./configure --prefix=/tmp/yangming LDFLAGS=-L/home/ym/onvif_test/wsdl". 第三步 :输入 "make"指令 .如果您的系统使用的aclocal是11.*的版本,请修改对应的文件为您系统的版本.本soap使用的是10.*的版本. 第四步:执行"make install"指令 第五步:查找编译好的文件,到temp/yangming中."bin"和"lib"是 我们要使用的文件."bin"下的文件用于生成.h和c/c++文件."lib"下是所依赖的库.至此gsoap_2.8.15的编译工作就完成了.生成的文件,我们在以后步骤中要使用. 生成头文件 在线方式 执行命令 "wsdl2h -o onvif.h -c -s -t typemap.dat http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl http://www.onvif.org/onvif/ver10/display.wsdl http://www.onvif.org/onvif/ver10/deviceio.wsdl http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.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/receiver.wsdl http://www.onvif.org/onvif/ver10/recording.wsdl http://www.onvif.org/onvif/ver10/search.wsdl http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl http://www.onvif.org/onvif/ver10/replay.wsdl http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl http://www.onvif.org/onvif/ver10/schema/onvif.xsd http://www.onvif.org/ver10/actionengine.wsdl http://www.onvif.org/ver10/pacs/accesscontrol.wsdl http://www.onvif.org/ver10/pacs/doorcontrol.wsdl http://www.onvif.org/ver10/advancedsecurity/wsdl/advancedsecurity.wsdl" 离线方式 第一步:获取wsdl文件及xsd文件 下载网址如下: WSDL:http://www.onvif.org/onvif/ver20/util/operationIndex.html onvif.xsd: http://www.onvif.org/onvif/ver10/schema/onvif.xsd 建议使用迅雷下载 我已经将要使用的文件下载好了: 我们将"onvif_test"中的"wsdl"文件夹拷贝到linux中. 第二步:将"tmp/yangming/bin"中的两个文件拷贝到"ym/onvif_test/wsdl"中 第三步:在"ym/onvif_test/wsdl"中创建"gsoap_2.8.15_lib"文件夹 ,并将"tmp/yangming/lib"中的全部文件拷贝到"ym/onvif_test/wsdl/ gsoap_2.8.15_lib" 第四步:将ym/onvif_test/wsdl/ gsoap_2.8.15_lib添加到path. 进入终端 输入"vi ~/.bashrc"指令 添加":$HOME/ym/onvif_test/wsdl/ gsoap_2.8.15_lib " 保存退出 "Esc"wq" "回车" 第五步:进入终端,进入"ym/onvif_test/wsdl"目录,执行"wsdl2h -sck -t typemap.dat -o onvif.h analytics.wsdl analyticsdevice.wsdl devicemgmt.wsdl display.wsdl event.wsdl imaging.wsdl media.wsdl ptz.wsdl receiver.wsdl recording.wsdl remotediscovery.wsdl replay.wsdl search.wsdl"命令.之后会生成一个onvif.h的文件, 生成c/c++文件,使用下面的指令 第一步:在"ym/onvif_test/wsdl/"目录 中建立"gsoap_c"文件夹该文件夹用于保存c/c++文件. 第二步:修改 "ym/onvif_test/wsdl/gsoap_2.8.15/gsoap_import/wsa5.h" 屏蔽掉 如下信息 第三步:进入终端,进入"ym/onvif_test/wsdl"目录,执行"soapcpp2 -2 -L -c -x -d ../gsoap_c -I ../gsoap_2.8.15/gsoap:../gsoap_2.8.15/gsoap/import/:../gsoap_2.8.15/gsoap/custom/ onvif.h"命令. 编译SOAP文件 第一步:在"ym/onvif_test/"目录中建立一个"soap"的目录 第二步:拷贝需要用到的文件.从"ym/onvif_test/wsdl/ gsoap_c"目录中获取如下文件.拷贝到"ym/onvif_test/soap"中 第三步:拷贝需要用到的文件.从"ym/onvif_test/wsdl/gsoap_2.8.15/gsoap"目录中获取如下文件.拷贝到"ym/onvif_test/soap"中. 第四步:拷贝需要用到的文件.从"ym/onvif_test/wsdl/gsoap_2.8.15/gsoap/ custom"目录中获取如下文件.拷贝到"ym/onvif_test/soap"中.最后会有9个文件在soap中. 第四步:对soap文件生成.o 在"ym/onvif_test/soap"目录下生成MakeFile内容如下 OBJS =soapC.o soapServer.o stdsoap2.o CC=gcc CFLAGS = -I../wsdl/ -g -Wall -O -O1 -DWITH_OPENSSL -DWITH_DOM -o $@ all: $(OBJS) %.o:%.c $(CC) -Wall -c -o $@ $