基于ONVIF协议的(IPC)客户端程序开发-6:Gsoap-2.8编译

1、gSOAP下载地址:

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

2、gSOAP工具主要包括两个可执行文件:wsdl2h和soapcpp2。wsdl2h可以读取.wsdl格式文件并输出.h文件,而soapcpp2则可以读取.h格式文件(wsdl2h生成的或者包含用户自己定义的接口)生成server端和client端的框架。 

3、 解压

zip gsoap_2.8.59.zip

解压以后可以在gsoap/bin文件夹发现有 macosx 和 win32 两个平台的已经编译好的可以执行文件。没有linux平台的。gSOAP生成server端和client端的框架是可以平台使用的,所以如果你完全可以在windows平台上生成你需要的。

4、根据README.txt文件需要这些依赖库 

 OpenSSL、 zlib、bison、flex 

5、安装openssl

 下载地址:https://www.openssl.org/ 

  安装

 ./config --prefix=/work/my/code/ipc/onvif/openssl no-shared

6、安装zlib

 下载地址:http://download.csdn.net/download/u013399786/9905693

 ./configure --shared --prefix=/work/my/code/zip/zlib

6、配置gsop 由于我的zlib和OpenSSL 都没有在系统目录,因此要指定安装目录

./configure --prefix=/work/my/code/ipc/onvif/gsoap --with-zlib=/work/my/code/zip/zlib/ --with-openssl=/work/my/code/ipc/onvif/openssl/  

7、编译 错误解决

   a、错误1

s/c$/h/` y.output soapcpp2_yacc.output -- yacc -d -v 
../../ylwrap: line 176: yacc: command not found
Makefile:521: recipe for target 'soapcpp2_yacc.c' failed
编译出错 : yacc: 未找到命令 , 需要安装yacc

$sudo apt-get install bison
  b、 错误2

/bin/bash ../../ylwrap soapcpp2_lex.l .c soapcpp2_lex.c -- /bin/bash /home/test/Downloads/gsoap-2.8/missing flex 
updating lex.yysoapcpp2_lex.c 

编译出错 : flex: 未找到命令 , 需要安装flex

sudo apt-get install flex
  

  c、可能还要安装 openssl的库文件

sudo apt-get install libssl-dev

  d、错误3

dso_dlfcn.c:(.text+0x11):对‘dlopen’未定义的引用

 缺少dl库,修改configure 在下面-lz后面加 -ldl

WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lssl -lcrypto -lz -ldl"
    
SAMPLE_SSL_LIBS="-lssl -lcrypto -lz -ldl"
8、安装

 make install
最后在安装的/bin目录下生成  soapcpp2 wsdl2h

9、测试

wsdl2h -h
   结果:

root@ubuntu16:/work/my/code/ipc/onvif/gsoap/bin# ./wsdl2h -h 
Usage: wsdl2h [-a] [-b] [-c|-c++|-c++11] [-D] [-d] [-e] [-f] [-g] [-h] [-I path] [-i] [-j] [-k] [-l] [-m] [-M] [-N name] [-n name] [-P|-p] [-q name] [-R] [-r proxyhost[:port[:uid:pwd]]] [-r:userid:passwd] [-s] [-Sname] [-t typemapfile] [-U] [-u] [-V] [-v] [-w] [-W] [-x] [-y] [-z#] [-_] [-o outfile.h] infile.wsdl infile.xsd http://www... ...

-a      generate indexed struct names for local elements with anonymous types
-b      bi-directional operations (duplex ops) added to serve one-way responses
-c      generate C source code
-c++    generate C++ source code (default)
-c++11  generate C++11 source code
-d      use DOM to populate xs:any, xs:anyType, and xs:anyAttribute
-D      make attribute members with default values optional with pointers
-e      don't qualify enum names
-f      generate flat C++ class hierarchy
-g      generate global top-level element declarations
-h      display help info
-Ipath  use path to find files
 说明安装成功

如果出现
wsdl2h: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

提示找不到OpenSSL动态库文件,解决方法:

1.将.so文件路径「/usr/local/ssl/lib」追加到/etc/ld.so.conf文件末尾。

$ echo /usr/local/ssl/lib >> /etc/ld.so.conf

       2.使得修改立刻生效:
$ ldconfig










  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ONVIF协议是一种开放的网络视频接口标准,旨在实现网络摄像机、网络视频录像机和其他相关设备的互通互联。在开发ONVIF协议网络摄像机客户端程序时,我们需要遵循以下步骤: 首先,为了开发ONVIF协议网络摄像机客户端程序,我们需要对ONVIF协议进行深入了解。ONVIF协议定义了网络摄像机和客户端之间的通信规则和接口,包括设备发现、视频流传输、设备控制等。我们需要熟悉协议的各个方面,包括消息结构、命令和响应等。 其次,我们需要选择合适的开发平台和工具。ONVIF协议可以在不同平台上运行,如Windows、Linux等。我们可以选择适合我们的开发环境的编程语言和工具,并研究它们的ONVIF协议支持。 接下来,我们需要编写客户端程序的代码。首先,我们需要实现设备发现功能,通过发送协议指定的消息,搜索网络中的ONVIF设备。一旦找到设备,我们就可以获取设备的信息,如设备地址、设备型号等。然后,我们可以向设备发送命令,如实时视频流请求、设备时间同步等。我们需要处理设备返回的响应消息,并根据协议规范处理各种结果。 最后,我们需要对开发客户端程序进行测试和调试。我们可以创建模拟的ONVIF设备,模拟设备的各种行为,并验证客户端程序的功能和性能。我们还可以使用一些专业的测试工具来检查客户端程序的兼容性和稳定性。 总而言之,在开发ONVIF协议网络摄像机客户端程序时,我们需要深入了解ONVIF协议,选择适合的开发平台和工具,编写代码实现协议的各种功能,并进行测试和调试。这个过程中需要耐心和细心,以确保开发出高质量的客户端程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值