1.安装openssl
2.下载gsoap
3.将Makefile 与其它source置于与gsoap同级的目录下,修改makefile内的gsoap版本信息,makefile如下
# Makefile of gsoap
ARCH ?=
gsoap_vesion := gsoap-2.8
root_dir := $(shell pwd)
build_dir := $(root_dir)/$(gsoap_vesion)
install_dir := $(root_dir)/install
onvif_dir := $(root_dir)/onvif
wsdl_dir := $(root_dir)/wsdl
.PHONY: install clean
install:
@rm -rf $(onvif_dir)
@if [ ! -d $(install_dir) ]; then \
cd $(build_dir);./configure --prefix=$(install_dir); \
make; make install >/dev/null; \
fi
# generate onvif file
@if [ ! -d $(onvif_dir) ]; then \
rm -rf $(onvif_dir); \
mkdir -p $(onvif_dir); \
$(install_dir)/bin/wsdl2h -P -x -c -s -t \
$(build_dir)/gsoap/typemap.dat -o onvif.h \
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl \
http://www.onvif.org/onvif/ver20/media/wsdl/media.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/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/ver10/actionengine.wsdl \
http://www.onvif.org/ver10/pacs/accesscontrol.wsdl \
http://www.onvif.org/ver10/pacs/doorcontrol.wsdl; \
sed -i '1i #import "wsse.h"' onvif.h; \
$(install_dir)/bin/soapcpp2 -2 -C -L -c -x -d $(onvif_dir) \
-I$(build_dir)/gsoap:$(build_dir)/gsoap/import/:$(build_dir)/gsoap/custom/ onvif.h; \
mv onvif.h $(onvif_dir); \
fi
-ls $(onvif_dir)/*.nsmap | grep -v "$(onvif_dir)/wsdd.nsmap" |xargs rm
-mv $(onvif_dir)/wsdd.nsmap $(onvif_dir)/wsdd.h
sed -i 's/.*SOAP_WSA_2005$$/\/\/#define SOAP_WSA_2005/g' $(onvif_dir)/soapStub.h
cp $(build_dir)/gsoap/dom.c $(onvif_dir)
cp $(build_dir)/gsoap/plugin/mecevp.c $(onvif_dir)
cp $(build_dir)/gsoap/plugin/mecevp.h $(onvif_dir)
cp $(build_dir)/gsoap/plugin/smdevp.c $(onvif_dir)
cp $(build_dir)/gsoap/plugin/smdevp.h $(onvif_dir)
cp $(build_dir)/gsoap/stdsoap2.c $(onvif_dir)
cp $(build_dir)/gsoap/stdsoap2.h $(onvif_dir)
cp $(build_dir)/gsoap/plugin/threads.c $(onvif_dir)
cp $(build_dir)/gsoap/plugin/threads.h $(onvif_dir)
cp $(build_dir)/gsoap/plugin/wsaapi.c $(onvif_dir)
cp $(build_dir)/gsoap/plugin/wsaapi.h $(onvif_dir)
cp $(build_dir)/gsoap/plugin/wsddapi.c $(onvif_dir)
cp $(build_dir)/gsoap/plugin/wsddapi.h $(onvif_dir)
cp $(build_dir)/gsoap/plugin/wsseapi.c $(onvif_dir)
cp $(build_dir)/gsoap/plugin/wsseapi.h $(onvif_dir)
cp $(build_dir)/gsoap/custom/duration.c $(onvif_dir)
cp $(build_dir)/gsoap/custom/duration.h $(onvif_dir)
cp ./source/* $(onvif_dir)
chmod 777 $(onvif_dir)/Makefile
clean:
@test -f $(build_dir)/Makefile && make -C $(build_dir) distclean || true
@rm -rf $(install_dir) $(onvif_dir)
4.其它source内容
main.cpp onvif相关头文件路径根据自己的需要进行修改
/*main.cpp*/
#include <sys/socket.h>
#include "wsdd.h"
#include <iostream>
#include <sys/types.h>
#include<string>
#include<n