ONVIF: gsoap安装过程

本文详细记录了在Ubuntu 10.04系统中安装gSOAP 2.8.11的过程及解决各种依赖问题的方法,包括配置、编译过程中遇到的缺失工具和库文件等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面在ubuntu10.04中安装过程:

(1)下载最新gsoap 2.8.11(http://www.cs.fsu.edu/~engelen/soapdownload.html);

(2)在ubuntu10.04中configure。出现如下问题:

configure: error: C++ compiler cannot create executables

原因是漏安装了g++。重新安装后问题解决。(http://5491911.blog.51cto.com/5481911/932205

(3)make. 遇到的问题:

root@ubuntu:/home/zsq/gsoap_2.8.11/gsoap-2.8# make
cd . && /bin/bash /home/zsq/gsoap_2.8.11/gsoap-2.8/missing –run aclocal-1.10
/home/zsq/gsoap_2.8.11/gsoap-2.8/missing: line 46: aclocal-1.10: command not found
WARNING: `aclocal-1.10′ is needed, and you do not seem to have it handy on your
system. You might have modified some files without having the
proper tools for further handling them. Check the `README’ file,
it often tells you about the needed prerequirements for installing
this package. You may also peek at any GNU archive site, in case
some other package would contain this missing `aclocal-1.10′ program.
make: *** [aclocal.m4] Error 1

安装如下安装包,解决问题(http://ubuntuforums.org/showthread.php?p=9300062

Install the automake1.10 package (for 10.04 Lucid.)

遇到新的问题:../../ylwrap: line 111: yacc: command not found

解决办法:apt-get install byacc.

问题:missing: line 46: flex: command not found

解决:apt-get install flex (需要重新运行./configure)

问题:

gcc -DWITH_YACC -DWITH_FLEX -DSOAPCPP_IMPORT_PATH=”\”/usr/local/share/gsoap/import\”" -DLINUX -g -O2 -o soapcpp2 soapcpp2-soapcpp2_yacc.o soapcpp2-soapcpp2_lex.o soapcpp2-symbol2.o soapcpp2-error2.o soapcpp2-init2.o soapcpp2-soapcpp2.o -ly -lfl
/usr/bin/ld: cannot find -ly

解决:apt-get install bison


问题:

/usr/bin/ld: cannot find -lssl

解决:apt-get install libssl-dev

至此,make通过。

(4)make install

结束

### 使用 gSoap 实现 ONVIF 协议 #### 安装和配置 gSoap 工具链 为了使用 gSoap 来实现 ONVIF 协议,首先需要确保已正确安装并配置了 gSoap 开发环境。这通常涉及下载源码包、解压以及按照官方文档中的说明完成编译过程[^3]。 #### 获取 WSDL 文件 ONVIF 设备和服务接口定义通过 Web Services Description Language (WSDL) 描述。可以从官方网站获取最新的标准版本或特定厂商提供的扩展版 WSDL 文件[^1]。 #### 生成 C/C++ 绑定代码 利用 `wsdl2h` 和 `soapcpp2` 这两个命令行工具来解析 WSDL 并自动生成相应的存根(stub)/框架(skeleton),从而简化应用程序开发工作量: ```bash $ wsdl2h -o onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl $ soapcpp2 -CL onvif.h ``` 上述指令会创建一系列头文件(.h)与源文件(.cpp/.c),这些文件包含了调用远程服务所需的数据结构及函数原型声明[^4]。 #### 编写客户端程序 基于上一步骤产生的模板编写具体的业务逻辑代码。对于设备发现功能而言,主要关注点在于初始化网络连接参数设置、发送探测请求消息给目标IP地址范围内的潜在摄像机节点,并处理返回的结果集[^2]。 ```c++ #include "stdsoap2.h" #include "devicemgmt.nsmap" int main() { struct soap *soap = soap_new(); _tds__GetSystemDateAndTime request; tds__GetSystemDateAndTimeResponse response; const char* url = "http://example.com/onvif/device_service"; if(soap_call___tds__GetSystemDateAndTime(soap, url, NULL, &request, &response)== SOAP_OK){ printf("Current Time: %d-%02d-%02dT%02d:%02d:%02d\n", response.DateTimeType->UTCDateTime.Date.Year, response.DateTimeType->UTCDateTime.Date.Month, response.DateTimeType->UTCDateTime.Date.Day, response.DateTimeType->UTCDateTime.Time.Hour, response.DateTimeType->UTCDateTime.Time.Minute, response.DateTimeType->UTCDateTime.Time.Second); }else{ soap_print_fault(stderr, soap); } soap_destroy(soap); soap_end(soap); soap_free(soap); return 0; } ``` 此段示范性代码展示了如何向指定URL发起获取系统时间的服务请求;实际应用中应当替换为真实的摄像头管理端点路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值