海思[Hi3536]基于gsoap和openssl onvif协议实现及动态库编制

1、电脑网络不稳定,建议通过onvif官网下载全部WSDL\XSD资源:https://www.onvif.org/ch/profiles/specifications/

WSDL资源:

media2.wsdl devicemgmt.wsdl media.wsdl event.wsdl display.wsdl deviceio.wsdl imaging.wsdl ptz.wsdl receiver.wsdl recording.wsdl search.wsdl replay.wsdl analytics.wsdl actionengine.wsdl accesscontrol.wsdl doorcontrol.wsdl accessrules.wsdl authenticationbehavior.wsdl analytics.wsdl thermal.wsdl schedule.wsdl provisioning.wsdl advancedsecurity.wsdl credential.wsdl uplink.wsdl

2、生成onvif .h源文件

./wsdl2h -o onvif.h -t ./typemap.dat media2.wsdl devicemgmt.wsdl media.wsdl event.wsdl display.wsdl deviceio.wsdl imaging.wsdl ptz.wsdl receiver.wsdl recording.wsdl search.wsdl replay.wsdl analytics.wsdl actionengine.wsdl accesscontrol.wsdl doorcontrol.wsdl accessrules.wsdl authenticationbehavior.wsdl analytics.wsdl thermal.wsdl schedule.wsdl provisioning.wsdl advancedsecurity.wsdl credential.wsdl uplink.wsdl

注意不同的wsdl以空格分开。

目前Onvif官网提供的最新的WSDL文件一共有25个,可以将其下载下来。不过这些文件直接都是相互关联的,下载的话,除了这25个文件之外,还要下载所有相关联的文件。另外,下载之后,还需要更改文件中的路径,所有wsdl文件中的schemaLocation以及location所指的路径进行修改,修改为本地的地址。当然如果网速够快,提倡直接在线生成头文件和源文件。另外为了避免后续开发过程中出现某些功能的缺省,最好一次性生成包含所有功能的代码。

3、生成onvif C源文件:

./soapcpp2 -j -x -C -L onvif.h -I /home/gsoap/gsoap-2.8/gsoap/import -I /home/gsoap/gsoap-2.8/gsoap

4、生成libonvif.so

日志文件较大,编译时建议去除-D SOAP_DEBUG,可不生成日志文件

-rw-r--r--    1 root     root        9.4M Mar 15 02:43 RECV.log

-rw-r--r--    1 root     root        5.4M Mar 15 02:43 SENT.log

-rw-r--r--    1 root     root      576.3M Mar 15 02:43 TEST.log

RECV.log是onvif接收到的SOAP数据,没接收一条,都会在RECV.log中记录

SENT.log是onvif发送出去的SOAP数据,没发送一套,也会在SENT.log中生成记录

TEST.log,如果说RECV和SENT可以用wireshark工具抓包代替,那么TEST.log是谁也替代不了

Makefile编写:

--目标

EXEC=libonvif.so

OBJS_PATH=./

SRC=$(notdir $(wildcard *.cpp))

OBJS=$(patsubst %.cpp,$(OBJS_PATH)/%.o,$(SRC))

#--动态库编译选项

CC=arm-hisiv400-linux-g++

CFLAGS+=-fPIC -Wall -D WITH_NONAMESPACES -D WITH_OPENSSL -D WITH_NOEMPTYSTRUCT -D WITH_DOM #-D SOAP_DEBUG -O3 -g

LDFLAGS+=-shared

CXXFLAGS+='-DWITH_OPENSSL -DWITH_NONAMESPACES'

LDLIBS+= -lssl \

-lcrypto \

-lpthread

#--目标及规则

all: $(EXEC)

$(EXEC): $(OBJS)

$(CC) $^ $(CFLAGS) $(LDFLAGS) -o $(EXEC) -I openssl头文件/include -L openssl动态库/lib $(LDLIBS)

%.o : %.cpp

$(CC) -c  $< -o  $@ $(CFLAGS) $(LDFLAGS)  -I openssl头文件/include -L openssl动态库/lib $(LDLIBS)

clean:

-rm -f $(EXEC) *.elf *.gdb *.o *.so

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xifengma508

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值