创作人QQ:851301776,邮箱:lfr890207@163.com,欢迎大家一起技术交流,本博客主要是自己学习的心得体会,只为每天进步一点点!

个人座右铭:
1.没有横空出世,只要厚积一定发。
2.你可以学历不高,你可以不上学,但你不能不学习

这篇博客,发出来的主要原因是因为:系统里搭建nginx的https部分,重新安装了一下openssl造成出错,结果https配置起来了,onvif编译一直出错,查找了一下问题,解决后,所以特意贴出来献丑了

如果有同行看到此篇博客,切记注意一下库的版本。

一、介绍

最近搞了一个来月的ONVIF,由于之前没玩过音视频相关的,所以比较费劲。搞了一个来月,总算是把onvif的主要功能,全部搞好。其实主要有两个难点:第一个是生成gsoap生成onvif框架代码,第二个是云台控制(下一篇中整理)。

二、安装依赖库

安装bison(sudo apt-get install bison)

官网:http://www.gnu.org/software/bison/
版本:bison-2.7.91.tar.gz
安装:详见bison-2.7.91/INSTALL说明

安装Flex(sudo apt-get install fiex)

官网:http://flex.sourceforge.net/
版本:flex-2.6.0.tar.gz
安装:详见flex-2.6.0/INSTALL说明

安装OpenSSL(sudo apt-get install openssl)

官网:https://www.openssl.org/
版本:openssl-1.0.2h

指令:cd openssl-1.0.2h & ./config no-asm shared & make & sudo make install 
安装:详见openssl-1.0.2h/INSTALL说明
备注:我采用默认安装路径/usr/local/ssl/,如果make报错,就去掉Makefile里面的-m64, 好像是两处,如果不报错,就不要管

  • no-asm : Do not use assembler code
  • shared : 编译连接成动态库

这个路径等下编译gSOAP源码时会用到

设置openssl的路径加入系统

然后执行:sudo ldconfig

三、下载和安装gsoap

1、下载源码(我下载的是2.8.117)

gSOAP官方网址:gSOAP: SOAP/XML Web Services and XML Data Bindings for C and C++

2. wsdl2h和soapcpp2简介

要用gsoap生成onvif源码,必须用到wsdl2h和soapcpp2两个工具(执行文件)。在gsoap\bin目录下,win32和macosx平台已经有现成的了(官方帮我们编译好了的),linux下的要自己编译咯,可参考INSTALL.txt文件进行编译安装(不同gSOAP版本的编译安装方法会略有不同,以你gSOAP版本中的INSTALL.txt为准)。

通过实验证实,wsdl2h和soapcpp2两个工具,不管是Windows版的,还是Linux版的,它们从WSDL转成的框架代码,是一样样的,没有区别。

3、编译生成wsdl2h和soapcpp2两个工具

(1)# cd gsoap-2.8/

(2)配置--with-openssl=/usr/local/ssl :openssl的安装路径

mrlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8$ ./configure --with-openssl=/usr/local/ssl
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking whether make sets $(MAKE)... (cached) yes
checking for g++... g++
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking dependency style of gcc... gcc3
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... -lfl
checking whether yytext is a pointer... yes
checking for bison... bison -y
checking how to run the C preprocessor... gcc -E
checking for ranlib... ranlib
checking whether ln -s works... yes
checking for gawk... (cached) mawk
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking xlocale.h usability... yes
checking xlocale.h presence... yes
checking for xlocale.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking float.h usability... yes
checking float.h presence... yes
checking for float.h... yes
checking math.h usability... yes
checking math.h presence... yes
checking for math.h... yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking netinet/in.h usability... yes
checking netinet/in.h presence... yes
checking for netinet/in.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for strings.h... (cached) yes
checking for stdint.h... (cached) yes
checking for inttypes.h... (cached) yes
checking time.h usability... yes
checking time.h presence... yes
checking for time.h... yes
checking sys/inttypes.h usability... no
checking sys/inttypes.h presence... no
checking for sys/inttypes.h... no
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking for sys/types.h... (cached) yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/timeb.h usability... yes
checking sys/timeb.h presence... yes
checking for sys/timeb.h... yes
checking for unistd.h... (cached) yes
checking poll.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking openssl/ssl.h usability... yes
checking openssl/ssl.h presence... yes
checking for openssl/ssl.h... yes
checking gnutls/gnutls.h usability... yes
checking gnutls/gnutls.h presence... yes
checking for gnutls/gnutls.h... yes
checking zlib.h usability... yes
checking zlib.h presence... yes
checking for zlib.h... yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking whether struct tm is in sys/time.h or time.h... time.h
checking for struct tm.tm_gmtoff... yes
checking for struct tm.__tm_gmtoff... no
checking for sys/time.h... (cached) yes
checking for unistd.h... (cached) yes
checking for alarm... yes
checking for working mktime... yes
checking return type of signal handlers... void
checking for strftime... yes
checking for random... yes
checking for gettimeofday... yes
checking for ftime... yes
checking for localtime_r... yes
checking for timegm... yes
checking for gmtime... yes
checking for gmtime_r... yes
checking for asctime... yes
checking for asctime_r... yes
checking for memset... yes
checking for select... yes
checking for socket... yes
checking for snprintf... yes
checking for strchr... yes
checking for strerror... yes
checking for strerror_r... yes
checking for strlcpy... no
checking for strrchr... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking for strtoll... yes
checking for strtoull... yes
checking for strtold... yes
checking for strtod... yes
checking for strtof... yes
checking for strtold_l... yes
checking for strtod_l... yes
checking for strtof_l... yes
checking for sscanf... yes
checking for sscanf_l... no
checking for snprintf... (cached) yes
checking for sprintf_l... no
checking for wctomb... yes
checking for mbtowc... yes
checking for poll... yes
checking for newlocale... yes
checking for uselocale... yes
checking for freelocale... yes
checking for isnan... yes
checking for isinf... yes
checking for gethostbyname_r... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for disable namespaces in library... no
checking for enable ipv6 in library... no
checking for disable openssl in library... no
checking for enable gnutls in library... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating gsoap.pc
config.status: creating gsoap++.pc
config.status: creating gsoapck.pc
config.status: creating gsoapck++.pc
config.status: creating gsoapssl.pc
config.status: creating gsoapssl++.pc
config.status: creating gsoap/Makefile
config.status: creating gsoap/src/Makefile
config.status: creating gsoap/wsdl/Makefile
config.status: creating gsoap/samples/Makefile
config.status: creating gsoap/samples/autotest/Makefile
config.status: creating gsoap/samples/aws/Makefile
config.status: creating gsoap/samples/calc/Makefile
config.status: creating gsoap/samples/calc++/Makefile
config.status: creating gsoap/samples/chaining/Makefile
config.status: creating gsoap/samples/chaining++/Makefile
config.status: creating gsoap/samples/databinding/Makefile
config.status: creating gsoap/samples/dime/Makefile
config.status: creating gsoap/samples/dom/Makefile
config.status: creating gsoap/samples/oneway/Makefile
config.status: creating gsoap/samples/oneway++/Makefile
config.status: creating gsoap/samples/factory/Makefile
config.status: creating gsoap/samples/factorytest/Makefile
config.status: creating gsoap/samples/gmt/Makefile
config.status: creating gsoap/samples/googleapi/Makefile
config.status: creating gsoap/samples/hello/Makefile
config.status: creating gsoap/samples/httpcookies/Makefile
config.status: creating gsoap/samples/lu/Makefile
config.status: creating gsoap/samples/magic/Makefile
config.status: creating gsoap/samples/mashup/Makefile
config.status: creating gsoap/samples/mashup++/Makefile
config.status: creating gsoap/samples/mtom/Makefile
config.status: creating gsoap/samples/mtom-stream/Makefile
config.status: creating gsoap/samples/polytest/Makefile
config.status: creating gsoap/samples/primes/Makefile
config.status: creating gsoap/samples/roll/Makefile
config.status: creating gsoap/samples/router/Makefile
config.status: creating gsoap/samples/rss/Makefile
config.status: creating gsoap/samples/ssl/Makefile
config.status: creating gsoap/samples/template/Makefile
config.status: creating gsoap/samples/udp/Makefile
config.status: creating gsoap/samples/varparam/Makefile
config.status: creating gsoap/samples/wsa/Makefile
config.status: creating gsoap/samples/wsrm/Makefile
config.status: creating gsoap/samples/wsse/Makefile
config.status: creating gsoap/samples/wst/Makefile
config.status: creating gsoap/samples/xml-rpc-json/Makefile
config.status: creating gsoap/samples/rest/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands

(3) make

mrlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8$ make
make  all-recursive
make[1]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8'
Making all in gsoap
make[2]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
ln -s -f ./stdsoap2.cpp stdsoap2_cpp.cpp
ln -s -f ./dom.cpp dom_cpp.cpp
ln -s -f ./stdsoap2.cpp stdsoap2_ck.c
ln -s -f ./stdsoap2.cpp stdsoap2_ck_cpp.cpp
ln -s -f ./stdsoap2.cpp stdsoap2_ssl.c
ln -s -f ./stdsoap2.cpp stdsoap2_ssl_cpp.cpp
make  all-recursive
make[3]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
Making all in .
make[4]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
gcc -DHAVE_CONFIG_H -I. -I..       -DLINUX -g -O2 -MT libgsoap_a-stdsoap2.o -MD -MP -MF .deps/libgsoap_a-stdsoap2.Tpo -c -o libgsoap_a-stdsoap2.o `test -f 'stdsoap2.c' || echo './'`stdsoap2.c
mv -f .deps/libgsoap_a-stdsoap2.Tpo .deps/libgsoap_a-stdsoap2.Po
gcc -DHAVE_CONFIG_H -I. -I..       -DLINUX -g -O2 -MT libgsoap_a-dom.o -MD -MP -MF .deps/libgsoap_a-dom.Tpo -c -o libgsoap_a-dom.o `test -f 'dom.c' || echo './'`dom.c
mv -f .deps/libgsoap_a-dom.Tpo .deps/libgsoap_a-dom.Po
rm -f libgsoap.a
ar cru libgsoap.a libgsoap_a-stdsoap2.o libgsoap_a-dom.o
ar: `u' 修饰符被忽略,因为 `D' 为默认(参见 `U')
ranlib libgsoap.a
g++ -DHAVE_CONFIG_H -I. -I..       -DLINUX -g -O2 -MT libgsoap___a-stdsoap2_cpp.o -MD -MP -MF .deps/libgsoap___a-stdsoap2_cpp.Tpo -c -o libgsoap___a-stdsoap2_cpp.o `test -f 'stdsoap2_cpp.cpp' || echo './'`stdsoap2_cpp.cpp
mv -f .deps/libgsoap___a-stdsoap2_cpp.Tpo .deps/libgsoap___a-stdsoap2_cpp.Po
g++ -DHAVE_CONFIG_H -I. -I..       -DLINUX -g -O2 -MT libgsoap___a-dom_cpp.o -MD -MP -MF .deps/libgsoap___a-dom_cpp.Tpo -c -o libgsoap___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo './'`dom_cpp.cpp
mv -f .deps/libgsoap___a-dom_cpp.Tpo .deps/libgsoap___a-dom_cpp.Po
rm -f libgsoap++.a
ar cru libgsoap++.a libgsoap___a-stdsoap2_cpp.o libgsoap___a-dom_cpp.o
ar: `u' 修饰符被忽略,因为 `D' 为默认(参见 `U')
ranlib libgsoap++.a
gcc -DHAVE_CONFIG_H -I. -I..       -DLINUX -DWITH_COOKIES -g -O2 -MT libgsoapck_a-stdsoap2_ck.o -MD -MP -MF .deps/libgsoapck_a-stdsoap2_ck.Tpo -c -o libgsoapck_a-stdsoap2_ck.o `test -f 'stdsoap2_ck.c' || echo './'`stdsoap2_ck.c
mv -f .deps/libgsoapck_a-stdsoap2_ck.Tpo .deps/libgsoapck_a-stdsoap2_ck.Po
gcc -DHAVE_CONFIG_H -I. -I..       -DLINUX -DWITH_COOKIES -g -O2 -MT libgsoapck_a-dom.o -MD -MP -MF .deps/libgsoapck_a-dom.Tpo -c -o libgsoapck_a-dom.o `test -f 'dom.c' || echo './'`dom.c
mv -f .deps/libgsoapck_a-dom.Tpo .deps/libgsoapck_a-dom.Po
rm -f libgsoapck.a
ar cru libgsoapck.a libgsoapck_a-stdsoap2_ck.o libgsoapck_a-dom.o
ar: `u' 修饰符被忽略,因为 `D' 为默认(参见 `U')
ranlib libgsoapck.a
g++ -DHAVE_CONFIG_H -I. -I..       -DLINUX -DWITH_COOKIES -g -O2 -MT libgsoapck___a-stdsoap2_ck_cpp.o -MD -MP -MF .deps/libgsoapck___a-stdsoap2_ck_cpp.Tpo -c -o libgsoapck___a-stdsoap2_ck_cpp.o `test -f 'stdsoap2_ck_cpp.cpp' || echo './'`stdsoap2_ck_cpp.cpp
mv -f .deps/libgsoapck___a-stdsoap2_ck_cpp.Tpo .deps/libgsoapck___a-stdsoap2_ck_cpp.Po
g++ -DHAVE_CONFIG_H -I. -I..       -DLINUX -DWITH_COOKIES -g -O2 -MT libgsoapck___a-dom_cpp.o -MD -MP -MF .deps/libgsoapck___a-dom_cpp.Tpo -c -o libgsoapck___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo './'`dom_cpp.cpp
mv -f .deps/libgsoapck___a-dom_cpp.Tpo .deps/libgsoapck___a-dom_cpp.Po
rm -f libgsoapck++.a
ar cru libgsoapck++.a libgsoapck___a-stdsoap2_ck_cpp.o libgsoapck___a-dom_cpp.o
ar: `u' 修饰符被忽略,因为 `D' 为默认(参见 `U')
ranlib libgsoapck++.a
gcc -DHAVE_CONFIG_H -I. -I..       -DLINUX -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWITH_DOM -DWITH_COOKIES -g -O2 -MT libgsoapssl_a-stdsoap2_ssl.o -MD -MP -MF .deps/libgsoapssl_a-stdsoap2_ssl.Tpo -c -o libgsoapssl_a-stdsoap2_ssl.o `test -f 'stdsoap2_ssl.c' || echo './'`stdsoap2_ssl.c
mv -f .deps/libgsoapssl_a-stdsoap2_ssl.Tpo .deps/libgsoapssl_a-stdsoap2_ssl.Po
gcc -DHAVE_CONFIG_H -I. -I..       -DLINUX -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWITH_DOM -DWITH_COOKIES -g -O2 -MT libgsoapssl_a-dom.o -MD -MP -MF .deps/libgsoapssl_a-dom.Tpo -c -o libgsoapssl_a-dom.o `test -f 'dom.c' || echo './'`dom.c
mv -f .deps/libgsoapssl_a-dom.Tpo .deps/libgsoapssl_a-dom.Po
rm -f libgsoapssl.a
ar cru libgsoapssl.a libgsoapssl_a-stdsoap2_ssl.o libgsoapssl_a-dom.o
ar: `u' 修饰符被忽略,因为 `D' 为默认(参见 `U')
ranlib libgsoapssl.a
g++ -DHAVE_CONFIG_H -I. -I..       -DLINUX -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWITH_DOM -DWITH_COOKIES -g -O2 -MT libgsoapssl___a-stdsoap2_ssl_cpp.o -MD -MP -MF .deps/libgsoapssl___a-stdsoap2_ssl_cpp.Tpo -c -o libgsoapssl___a-stdsoap2_ssl_cpp.o `test -f 'stdsoap2_ssl_cpp.cpp' || echo './'`stdsoap2_ssl_cpp.cpp
mv -f .deps/libgsoapssl___a-stdsoap2_ssl_cpp.Tpo .deps/libgsoapssl___a-stdsoap2_ssl_cpp.Po
g++ -DHAVE_CONFIG_H -I. -I..       -DLINUX -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWITH_DOM -DWITH_COOKIES -g -O2 -MT libgsoapssl___a-dom_cpp.o -MD -MP -MF .deps/libgsoapssl___a-dom_cpp.Tpo -c -o libgsoapssl___a-dom_cpp.o `test -f 'dom_cpp.cpp' || echo './'`dom_cpp.cpp
mv -f .deps/libgsoapssl___a-dom_cpp.Tpo .deps/libgsoapssl___a-dom_cpp.Po
rm -f libgsoapssl++.a
ar cru libgsoapssl++.a libgsoapssl___a-stdsoap2_ssl_cpp.o libgsoapssl___a-dom_cpp.o
ar: `u' 修饰符被忽略,因为 `D' 为默认(参见 `U')
ranlib libgsoapssl++.a
make[4]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
Making all in src
make[4]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/src'
/bin/bash ../../ylwrap soapcpp2_yacc.y y.tab.c soapcpp2_yacc.c y.tab.h `echo soapcpp2_yacc.c | sed -e s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/ -e s/c++$/h++/ -e s/c$/h/` y.output soapcpp2_yacc.output -- bison -y -d -v
/home/mrlee/Gsoap/gsoap-2.8/gsoap/src/soapcpp2_yacc.y: 警告: 3 shift/reduce conflicts [-Wconflicts-sr]
updating soapcpp2_yacc.output
updating soapcpp2_yacc.h
gcc -DHAVE_CONFIG_H -I. -I../..    -DWITH_BISON -DWITH_FLEX  -DSOAPCPP2_IMPORT_PATH="\"/usr/local/share/gsoap/import\"" -DLINUX -g -O2 -MT soapcpp2-soapcpp2_yacc.o -MD -MP -MF .deps/soapcpp2-soapcpp2_yacc.Tpo -c -o soapcpp2-soapcpp2_yacc.o `test -f 'soapcpp2_yacc.c' || echo './'`soapcpp2_yacc.c
mv -f .deps/soapcpp2-soapcpp2_yacc.Tpo .deps/soapcpp2-soapcpp2_yacc.Po
/bin/bash ../../ylwrap soapcpp2_lex.l lex.yy.c soapcpp2_lex.c -- flex -l
gcc -DHAVE_CONFIG_H -I. -I../..    -DWITH_BISON -DWITH_FLEX  -DSOAPCPP2_IMPORT_PATH="\"/usr/local/share/gsoap/import\"" -DLINUX -g -O2 -MT soapcpp2-soapcpp2_lex.o -MD -MP -MF .deps/soapcpp2-soapcpp2_lex.Tpo -c -o soapcpp2-soapcpp2_lex.o `test -f 'soapcpp2_lex.c' || echo './'`soapcpp2_lex.c
soapcpp2_lex.c: In function ‘yy_init_buffer’:
soapcpp2_lex.c:1947:40: warning: implicit declaration of function ‘isatty’ [-Wimplicit-function-declaration]b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;^
mv -f .deps/soapcpp2-soapcpp2_lex.Tpo .deps/soapcpp2-soapcpp2_lex.Po
gcc -DHAVE_CONFIG_H -I. -I../..    -DWITH_BISON -DWITH_FLEX  -DSOAPCPP2_IMPORT_PATH="\"/usr/local/share/gsoap/import\"" -DLINUX -g -O2 -MT soapcpp2-symbol2.o -MD -MP -MF .deps/soapcpp2-symbol2.Tpo -c -o soapcpp2-symbol2.o `test -f 'symbol2.c' || echo './'`symbol2.c
mv -f .deps/soapcpp2-symbol2.Tpo .deps/soapcpp2-symbol2.Po
gcc -DHAVE_CONFIG_H -I. -I../..    -DWITH_BISON -DWITH_FLEX  -DSOAPCPP2_IMPORT_PATH="\"/usr/local/share/gsoap/import\"" -DLINUX -g -O2 -MT soapcpp2-error2.o -MD -MP -MF .deps/soapcpp2-error2.Tpo -c -o soapcpp2-error2.o `test -f 'error2.c' || echo './'`error2.c
mv -f .deps/soapcpp2-error2.Tpo .deps/soapcpp2-error2.Po
gcc -DHAVE_CONFIG_H -I. -I../..    -DWITH_BISON -DWITH_FLEX  -DSOAPCPP2_IMPORT_PATH="\"/usr/local/share/gsoap/import\"" -DLINUX -g -O2 -MT soapcpp2-init2.o -MD -MP -MF .deps/soapcpp2-init2.Tpo -c -o soapcpp2-init2.o `test -f 'init2.c' || echo './'`init2.c
mv -f .deps/soapcpp2-init2.Tpo .deps/soapcpp2-init2.Po
gcc -DHAVE_CONFIG_H -I. -I../..    -DWITH_BISON -DWITH_FLEX  -DSOAPCPP2_IMPORT_PATH="\"/usr/local/share/gsoap/import\"" -DLINUX -g -O2 -MT soapcpp2-soapcpp2.o -MD -MP -MF .deps/soapcpp2-soapcpp2.Tpo -c -o soapcpp2-soapcpp2.o `test -f 'soapcpp2.c' || echo './'`soapcpp2.c
mv -f .deps/soapcpp2-soapcpp2.Tpo .deps/soapcpp2-soapcpp2.Po
gcc -DWITH_BISON -DWITH_FLEX  -DSOAPCPP2_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  -lfl
make[4]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/src'
Making all in wsdl
make[4]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
../../gsoap/src/soapcpp2 -SC -pwsdl -I. -I../../gsoap/import ./wsdl.h
soapcpp2: using both options -C and -S omits client/server code**  The gSOAP code generator for C and C++, soapcpp2 release 2.8.46
**  Copyright (C) 2000-2017, Robert van Engelen, Genivia Inc.
**  All Rights Reserved. This product is provided "as is", without any warranty.
**  The soapcpp2 tool and its generated software are released under the GPL.
**  ----------------------------------------------------------------------------
**  A commercial use license is available from Genivia Inc., contact@genivia.com
**  ----------------------------------------------------------------------------Saving wsdlStub.h annotated copy of the source interface file
Saving wsdlH.h serialization functions to #include in projects
Saving xmime.nsmap namespace mapping table
Saving wsdlC.cpp serialization functionsCompilation successful make  all-am
make[5]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-wsdl2h.o -MD -MP -MF .deps/wsdl2h-wsdl2h.Tpo -c -o wsdl2h-wsdl2h.o `test -f 'wsdl2h.cpp' || echo './'`wsdl2h.cpp
mv -f .deps/wsdl2h-wsdl2h.Tpo .deps/wsdl2h-wsdl2h.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-wsdl.o -MD -MP -MF .deps/wsdl2h-wsdl.Tpo -c -o wsdl2h-wsdl.o `test -f 'wsdl.cpp' || echo './'`wsdl.cpp
mv -f .deps/wsdl2h-wsdl.Tpo .deps/wsdl2h-wsdl.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-wadl.o -MD -MP -MF .deps/wsdl2h-wadl.Tpo -c -o wsdl2h-wadl.o `test -f 'wadl.cpp' || echo './'`wadl.cpp
mv -f .deps/wsdl2h-wadl.Tpo .deps/wsdl2h-wadl.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-schema.o -MD -MP -MF .deps/wsdl2h-schema.Tpo -c -o wsdl2h-schema.o `test -f 'schema.cpp' || echo './'`schema.cpp
mv -f .deps/wsdl2h-schema.Tpo .deps/wsdl2h-schema.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-types.o -MD -MP -MF .deps/wsdl2h-types.Tpo -c -o wsdl2h-types.o `test -f 'types.cpp' || echo './'`types.cpp
mv -f .deps/wsdl2h-types.Tpo .deps/wsdl2h-types.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-service.o -MD -MP -MF .deps/wsdl2h-service.Tpo -c -o wsdl2h-service.o `test -f 'service.cpp' || echo './'`service.cpp
mv -f .deps/wsdl2h-service.Tpo .deps/wsdl2h-service.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-soap.o -MD -MP -MF .deps/wsdl2h-soap.Tpo -c -o wsdl2h-soap.o `test -f 'soap.cpp' || echo './'`soap.cpp
mv -f .deps/wsdl2h-soap.Tpo .deps/wsdl2h-soap.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-mime.o -MD -MP -MF .deps/wsdl2h-mime.Tpo -c -o wsdl2h-mime.o `test -f 'mime.cpp' || echo './'`mime.cpp
mv -f .deps/wsdl2h-mime.Tpo .deps/wsdl2h-mime.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-wsp.o -MD -MP -MF .deps/wsdl2h-wsp.Tpo -c -o wsdl2h-wsp.o `test -f 'wsp.cpp' || echo './'`wsp.cpp
mv -f .deps/wsdl2h-wsp.Tpo .deps/wsdl2h-wsp.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-bpel.o -MD -MP -MF .deps/wsdl2h-bpel.Tpo -c -o wsdl2h-bpel.o `test -f 'bpel.cpp' || echo './'`bpel.cpp
mv -f .deps/wsdl2h-bpel.Tpo .deps/wsdl2h-bpel.Po
g++ -DHAVE_CONFIG_H -I. -I../..  -I../../gsoap -I../../gsoap/plugin  -DLINUX   -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -MT wsdl2h-wsdlC.o -MD -MP -MF .deps/wsdl2h-wsdlC.Tpo -c -o wsdl2h-wsdlC.o `test -f 'wsdlC.cpp' || echo './'`wsdlC.cpp
mv -f .deps/wsdl2h-wsdlC.Tpo .deps/wsdl2h-wsdlC.Po
g++  -I/usr/local/ssl/include -DWITH_OPENSSL -DWITH_GZIP -DWSDL2H_IMPORT_PATH="\"/usr/local/share/gsoap/WS\"" -g -O2 -L. -I../../gsoap -I../../gsoap/plugin  -o wsdl2h wsdl2h-wsdl2h.o wsdl2h-wsdl.o wsdl2h-wadl.o wsdl2h-schema.o wsdl2h-types.o wsdl2h-service.o wsdl2h-soap.o wsdl2h-mime.o wsdl2h-wsp.o wsdl2h-bpel.o wsdl2h-wsdlC.o ../../gsoap/libgsoapssl++.a -L/usr/local/ssl/lib  ../plugin/httpda.c ../plugin/smdevp.c ../plugin/threads.c -lssl -lcrypto -lz
make[5]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
make[4]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
make[3]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make[2]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make[2]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8'
make[2]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8'
make[1]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8'

(4) # sudo make install

mrlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8$ sudo make install
[sudo] mrlee 的密码:
Making install in gsoap
make[1]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make  install-recursive
make[2]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
Making install in .
make[3]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make[4]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'/bin/mkdir -p '/usr/local/lib'/usr/bin/install -c -m 644  libgsoap.a libgsoap++.a libgsoapck.a libgsoapck++.a libgsoapssl.a libgsoapssl++.a '/usr/local/lib'( cd '/usr/local/lib' && ranlib libgsoap.a )( cd '/usr/local/lib' && ranlib libgsoap++.a )( cd '/usr/local/lib' && ranlib libgsoapck.a )( cd '/usr/local/lib' && ranlib libgsoapck++.a )( cd '/usr/local/lib' && ranlib libgsoapssl.a )( cd '/usr/local/lib' && ranlib libgsoapssl++.a )/bin/mkdir -p '/usr/local/include'/usr/bin/install -c -m 644 stdsoap2.h '/usr/local/include'/bin/mkdir -p '/usr/local/share/gsoap'/bin/mkdir -p '/usr/local/share/gsoap/import'/usr/bin/install -c -m 644  ./import/c14n.h ./import/dom.h ./import/ds2.h ./import/ds.h ./import/plnk.h ./import/README.txt ./import/ref.h ./import/saml1.h ./import/saml2.h ./import/ser.h ./import/soap12.h ./import/stdstring.h ./import/stldeque.h ./import/stl.h ./import/stllist.h ./import/stlset.h ./import/stlvector.h ./import/vprop.h ./import/wsa3.h ./import/wsa4.h ./import/wsa5.h ./import/wsa.h ./import/wsc2.h ./import/wsc.h ./import/wsdd10.h ./import/wsdd5.h ./import/wsdd.h ./import/wsdx.h ./import/WS-example.c ./import/WS-example.h ./import/WS-Header.h ./import/wsp_appliesto.h ./import/wsp.h ./import/wsrm4.h ./import/wsrm5.h ./import/wsrm.h ./import/wsrp.h ./import/wsrx5.h ./import/wsrx.h ./import/wsse11.h '/usr/local/share/gsoap/import'/bin/mkdir -p '/usr/local/share/gsoap/plugin'/usr/bin/install -c -m 644  ./plugin/cacerts.c ./plugin/cacerts.h ./plugin/calcrest.h ./plugin/httpda.c ./plugin/httpda.h ./plugin/httpdatest.c ./plugin/httpdatest.h ./plugin/httpform.c ./plugin/httpform.h ./plugin/httpget.c ./plugin/httpget.h ./plugin/httpgettest.c ./plugin/httpgettest.h ./plugin/httpmd5.c ./plugin/httpmd5.h ./plugin/httpmd5test.c ./plugin/httpmd5test.h ./plugin/httppost.c ./plugin/httppost.h ./plugin/httpposttest.c ./plugin/httpposttest.h ./plugin/logging.c ./plugin/logging.h ./plugin/md5evp.c ./plugin/md5evp.h ./plugin/mecevp.c ./plugin/mecevp.h ./plugin/mq.c ./plugin/mq.h ./plugin/plugin.c ./plugin/plugin.h ./plugin/README.txt ./plugin/sessions.c ./plugin/sessions.h ./plugin/smdevp.c ./plugin/smdevp.h ./plugin/threads.c ./plugin/threads.h ./plugin/wsaapi.c ./plugin/wsaapi.h '/usr/local/share/gsoap/plugin'/bin/mkdir -p '/usr/local/share/gsoap/extras'/usr/bin/install -c -m 644  ./extras/ckdb.c ./extras/ckdb.h ./extras/ckdbtest.c ./extras/ckdbtest.h ./extras/fault.cpp ./extras/logging.cpp ./extras/README.txt ./extras/soapdefs.h '/usr/local/share/gsoap/extras'/bin/mkdir -p '/usr/local/share/gsoap/custom'/usr/bin/install -c -m 644  ./custom/chrono_duration.cpp ./custom/chrono_duration.h ./custom/chrono_time_point.cpp ./custom/chrono_time_point.h ./custom/duration.c ./custom/duration.h ./custom/float128.c ./custom/float128.h ./custom/int128.c ./custom/int128.h ./custom/long_double.c ./custom/long_double.h ./custom/long_time.c ./custom/long_time.h ./custom/qbytearray_base64.cpp ./custom/qbytearray_base64.h ./custom/qbytearray_hex.cpp ./custom/qbytearray_hex.h ./custom/qdate.cpp ./custom/qdate.h ./custom/qdatetime.cpp ./custom/qdatetime.h ./custom/qstring.cpp ./custom/qstring.h ./custom/qtime.cpp ./custom/qtime.h ./custom/README.txt ./custom/struct_timeval.c ./custom/struct_timeval.h ./custom/struct_tm.c ./custom/struct_tm_date.c ./custom/struct_tm_date.h ./custom/struct_tm.h '/usr/local/share/gsoap/custom'/bin/mkdir -p '/usr/local/share/gsoap/WS'/usr/bin/install -c -m 644  ./WS/discovery.xsd ./WS/ds.xsd ./WS/enumeration.xsd ./WS/LEGAL.txt ./WS/oasis-sstc-saml-schema-assertion-1.1.xsd ./WS/README.txt ./WS/reference-1.1.xsd ./WS/saml-schema-assertion-2.0.xsd ./WS/typemap.dat ./WS/WS-Addressing03.xsd ./WS/WS-Addressing04.xsd ./WS/WS-Addressing05.xsd ./WS/WS-Addressing.xsd ./WS/ws-bpel_abstract_common_base.xsd ./WS/ws-bpel_executable.xsd ./WS/ws-bpel_plnktype.xsd ./WS/ws-bpel_serviceref.xsd ./WS/ws-bpel_varprop.xsd ./WS/WS-Discovery.wsdl ./WS/WS-Enumeration.wsdl ./WS/WS-Policy12.xsd ./WS/WS-Policy.xsd ./WS/ws-reliability-1.1.xsd ./WS/WS-ReliableMessaging.wsdl ./WS/WS-ReliableMessaging.xsd ./WS/WS-Routing.xsd ./WS/WS-SecureConversation.xsd ./WS/WS-SecurityPolicy.xsd ./WS/wsse.xsd ./WS/WS-Trust.wsdl ./WS/WS-Trust.xsd ./WS/WS-typemap.dat ./WS/wsu.xsd ./WS/xenc.xsd '/usr/local/share/gsoap/WS'/bin/mkdir -p '/usr/local/share/gsoap/import'/usr/bin/install -c -m 644  ./import/wsse2.h ./import/wsse.h ./import/wst.h ./import/wstx.h ./import/wsu.h ./import/xenc2.h ./import/xenc.h ./import/xlink.h ./import/xmime4.h ./import/xmime5.h ./import/xmime.h ./import/xml.h ./import/xmlmime5.h ./import/xmlmime.h ./import/xop.h ./import/xsd.h '/usr/local/share/gsoap/import'/bin/mkdir -p '/usr/local/share/gsoap/plugin'/usr/bin/install -c -m 644  ./plugin/wsddapi.c ./plugin/wsddapi.h ./plugin/wsrmapi.c ./plugin/wsrmapi.h ./plugin/wsse2api.c ./plugin/wsse2api.h ./plugin/wsseapi.c ./plugin/wsseapi.cpp ./plugin/wsseapi.h ./plugin/wsseapi-lite.c ./plugin/wsseapi-lite.h ./plugin/wstapi.c ./plugin/wstapi.h '/usr/local/share/gsoap/plugin'
make  install-data-hook
make[5]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
ln -s -f ../gsoap/src/soapcpp2 ../gsoap/soapcpp2 || echo "ok, link already exists".
ln -s -f ../gsoap/wsdl/wsdl2h ../gsoap/wsdl2h || echo "ok, link already exists".
make[5]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make[4]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make[3]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
Making install in src
make[3]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/src'
make[4]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/src'/bin/mkdir -p '/usr/local/bin'/usr/bin/install -c soapcpp2 '/usr/local/bin'
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/src'
make[3]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/src'
Making install in wsdl
make[3]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
make  install-am
make[4]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
make[5]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'/bin/mkdir -p '/usr/local/bin'/usr/bin/install -c wsdl2h '/usr/local/bin'
make[5]: Nothing to be done for 'install-data-am'.
make[5]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
make[4]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
make[3]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap/wsdl'
make[2]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make[1]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8/gsoap'
make[1]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8'
make[2]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8'
make[2]: Nothing to be done for 'install-exec-am'./bin/mkdir -p '/usr/local/lib/pkgconfig'/usr/bin/install -c -m 644 gsoap.pc gsoap++.pc gsoapck.pc gsoapck++.pc gsoapssl.pc gsoapssl++.pc '/usr/local/lib/pkgconfig'
make  install-data-hook
make[3]: Entering directory '/home/mrlee/Gsoap/gsoap-2.8'
echo "+--------------------------------------------------------+"; \
echo "| You now have successfully built and installed gsoap.   |"; \
echo "|                                                        |"; \
echo "| You can link your programs with -lgsoap++ for          |"; \
echo "| C++ projects created with soapcpp2 and you can link    |"; \
echo "| with -lgsoap for C projects generated with soapcpp2 -c |"; \
echo "|                                                        |"; \
echo "| There are also corresponding libraries for SSL and     |"; \
echo "| zlib compression support (-lgsoapssl and lgsoapssl++)  |"; \
echo "| which require linking -lssl -lcrypto -lz               |"; \
echo "|                                                        |"; \
echo "| Thanks for using gsoap.                                |"; \
echo "|                                                        |"; \
echo "|               http://sourceforge.net/projects/gsoap2   |"; \
echo "+--------------------------------------------------------+";
+--------------------------------------------------------+
| You now have successfully built and installed gsoap.   |
|                                                        |
| You can link your programs with -lgsoap++ for          |
| C++ projects created with soapcpp2 and you can link    |
| with -lgsoap for C projects generated with soapcpp2 -c |
|                                                        |
| There are also corresponding libraries for SSL and     |
| zlib compression support (-lgsoapssl and lgsoapssl++)  |
| which require linking -lssl -lcrypto -lz               |
|                                                        |
| Thanks for using gsoap.                                |
|                                                        |
|               http://sourceforge.net/projects/gsoap2   |
+--------------------------------------------------------+
make[3]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8'
make[2]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8'
make[1]: Leaving directory '/home/mrlee/Gsoap/gsoap-2.8'

4、检查生成的wsdl2h和soapcpp2两个工具

以上表示 wsdl2h和soapcpp2两个工具,可以正常使用

四、生成ONVIF框架代码(生成C语言的客户端代码)

1.新建存放onvif代码目录(我这里新建为onvif)

2.拷贝/usr/local/bin下soapcpp2 wsdl2h工具到onvif,拷贝gsoap目录下的typemap.dat到onvif;

并且拷贝

3.参数介绍

-c : 生成c风格代码(注:后缀名还是.cpp ,但实际上是.c)

-c++:生成c++风格代码(注 : 默认是生成c++代码)

-x : 表示不生成xml 文件(注:生成的xml文件,有助于了解发送是SOAP是怎样的结构,建议不使用-x)

-l : 表示指定导入路径

-C : 表示生成客户端代码

-S : 表示生成服务端代码(生成可以,但是我最后删除了了生成的soapServer.c代码编译报错

-s : 不使用STL代码

-o: 生成.h文件叫什么名字

-t : 后面紧跟“typemap.dat”这个批处理文件

4.生成onvif.h(在线生成)

(1)进入onvif目录

(2)wsdl2h -P -c -s -x -t ./typemap.dat -o ./onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/deviceio.wsdl http://www.onvif.org/onvif/ver10/event/wsdl/event.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/display.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/network/wsdl/remotediscovery.wsdl http://www.onvif.org/onvif/ver10/recording.wsdl http://www.onvif.org/onvif/ver10/replay.wsdl http://www.onvif.org/onvif/ver10/search.wsdl

说明:这里包含比较齐全,建议在线生成

rlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8/onvif$ wsdl2h -P -c -s -x -t ./typemap.dat -o ./onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl http://www.onvif.org/onvif/ver10/deviceio.wsdl http://www.onvif.org/onvif/ver10/event/wsdl/event.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/display.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/network/wsdl/remotediscovery.wsdl http://www.onvif.org/onvif/ver10/recording.wsdl http://www.onvif.org/onvif/ver10/replay.wsdl http://www.onvif.org/onvif/ver10/search.wsdl
Saving ./onvif.h**  The gSOAP WSDL/WADL/XSD processor for C and C++, wsdl2h release 2.8.46
**  Copyright (C) 2000-2017 Robert van Engelen, Genivia Inc.
**  All Rights Reserved. This product is provided "as is", without any warranty.
**  The wsdl2h tool and its generated software are released under the GPL.
**  ----------------------------------------------------------------------------
**  A commercial use license is available from Genivia Inc., contact@genivia.com
**  ----------------------------------------------------------------------------Reading type definitions from type map "./typemap.dat"
Connecting to 'http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver10/device/wsdl/../../../ver10/schema/onvif.xsd' to retrieve schema '../../../ver10/schema/onvif.xsd'... connected, receiving...Connecting to 'http://docs.oasis-open.org/wsn/b-2.xsd' to retrieve schema... connected, receiving...Connecting to 'http://docs.oasis-open.org/wsrf/bf-2.xsd' to retrieve schema... connected, receiving...Done reading 'http://docs.oasis-open.org/wsrf/bf-2.xsd'Connecting to 'http://docs.oasis-open.org/wsn/t-1.xsd' to retrieve schema... connected, receiving...Done reading 'http://docs.oasis-open.org/wsn/t-1.xsd'Done reading 'http://docs.oasis-open.org/wsn/b-2.xsd'Connecting to 'http://www.onvif.org/onvif/ver10/device/wsdl/../../../ver10/schema/common.xsd' to retrieve schema... connected, receiving...Done reading 'http://www.onvif.org/onvif/ver10/device/wsdl/../../../ver10/schema/common.xsd'Done reading '../../../ver10/schema/onvif.xsd'
Done reading 'http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/deviceio.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver10/../ver10/schema/onvif.xsd' to retrieve schema '../ver10/schema/onvif.xsd'... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver10/../ver10/schema/common.xsd' to retrieve schema... connected, receiving...Done reading 'http://www.onvif.org/onvif/ver10/../ver10/schema/common.xsd'Done reading '../ver10/schema/onvif.xsd'
Done reading 'http://www.onvif.org/onvif/ver10/deviceio.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...Connecting to 'http://docs.oasis-open.org/wsn/bw-2.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...Connecting to 'http://docs.oasis-open.org/wsrf/rw-2.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...Connecting to 'http://docs.oasis-open.org/wsrf/r-2.xsd' to retrieve schema... connected, receiving...Done reading 'http://docs.oasis-open.org/wsrf/r-2.xsd'Done reading 'http://docs.oasis-open.org/wsrf/rw-2.wsdl'Done reading 'http://docs.oasis-open.org/wsn/bw-2.wsdl'
Done reading 'http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver10/schema/metadatastream.xsd' to retrieve schema '../../../ver10/schema/metadatastream.xsd'... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver20/analytics/humanface.xsd' to retrieve schema... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver10/schema/onvif.xsd' to retrieve schema... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver10/schema/common.xsd' to retrieve schema... connected, receiving...Done reading 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver10/schema/common.xsd'Done reading 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver10/schema/onvif.xsd'Done reading 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver20/analytics/humanface.xsd'Connecting to 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver20/analytics/humanbody.xsd' to retrieve schema... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver10/schema/common.xsd' to retrieve schema... connected, receiving...Done reading 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver10/schema/common.xsd'Done reading 'http://www.onvif.org/onvif/ver20/analytics/wsdl/../../../ver20/analytics/humanbody.xsd'Done reading '../../../ver10/schema/metadatastream.xsd'
Done reading 'http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver10/schema/onvif.xsd' to retrieve schema... connected, receiving...Connecting to 'http://www.onvif.org/onvif/ver10/schema/common.xsd' to retrieve schema... connected, receiving...Done reading 'http://www.onvif.org/onvif/ver10/schema/common.xsd'Done reading 'http://www.onvif.org/onvif/ver10/schema/onvif.xsd'
Done reading 'http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/display.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver10/display.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/receiver.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver10/receiver.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/recording.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver10/recording.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/replay.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver10/replay.wsdl'
Connecting to 'http://www.onvif.org/onvif/ver10/search.wsdl' to retrieve WSDL/WADL or XSD... connected, receiving...
Done reading 'http://www.onvif.org/onvif/ver10/search.wsdl'Warning: 8 service bindings found, but collected as one service (use option -Nname to produce a separate service for each binding)Warning: 2 service bindings found, but collected as one service (use option -Nname to produce a separate service for each binding)Warning: 2 service bindings found, but collected as one service (use option -Nname to produce a separate service for each binding)To finalize code generation, execute:
> soapcpp2 ./onvif.h

5.修改onvif

在onvif.h中 增加一句#import "wsse.h",用于身份验证

mrlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8/onvif$ vim onvif.h

6.SOAP_ENV__Fault 重复定义问题

这里要说明,改名称为“SOAP_ENV__Fault_alex”,

mrlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8/onvif$ sudo vim ../gsoap/import/wsa5.h

7、使用soapcpp2工具,根据头文件产生框架代码(在onvif目录下)

soapcpp2 -2 -L -c -x -d ./ -I ../gsoap:../gsoap/import/:../gsoap/custom/ onvif.h

mrlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8/onvif$ soapcpp2 -2 -L -c -x -d ./ -I ../gsoap:../gsoap/import/:../gsoap/custom/ onvif.h**  The gSOAP code generator for C and C++, soapcpp2 release 2.8.46
**  Copyright (C) 2000-2017, Robert van Engelen, Genivia Inc.
**  All Rights Reserved. This product is provided "as is", without any warranty.
**  The soapcpp2 tool and its generated software are released under the GPL.
**  ----------------------------------------------------------------------------
**  A commercial use license is available from Genivia Inc., contact@genivia.com
**  ----------------------------------------------------------------------------soap12.h(54): *WARNING*: option -1 or -2 overrides SOAP-ENV namespacesoap12.h(55): *WARNING*: option -1 or -2 overrides SOAP-ENC namespaceUsing project directory path: ./
Saving ./soapStub.h annotated copy of the source interface file
Saving ./soapH.h serialization functions to #include in projects
Using wsdd service name: wsdd
Using wsdd service style: document
Using wsdd service encoding: literal
Using wsdd schema import namespace: http://schemas.xmlsoap.org/ws/2005/04/discovery
Saving ./wsdd.nsmap namespace mapping table
Using tad service name: AnalyticsDeviceBinding
Using tad service style: document
Using tad service encoding: literal
Using tad schema namespace: http://www.onvif.org/ver10/analyticsdevice/wsdl
Saving ./AnalyticsDeviceBinding.nsmap namespace mapping table
Using tan service name: RuleEngineBinding
Using tan service style: document
Using tan service encoding: literal
Using tan schema namespace: http://www.onvif.org/ver20/analytics/wsdl
Saving ./RuleEngineBinding.nsmap namespace mapping table
Using tdn service name: RemoteDiscoveryBinding
Using tdn service style: document
Using tdn service encoding: literal
Using tdn schema namespace: http://www.onvif.org/ver10/network/wsdl
Saving ./RemoteDiscoveryBinding.nsmap namespace mapping table
Using tds service name: DeviceBinding
Using tds service style: document
Using tds service encoding: literal
Using tds schema namespace: http://www.onvif.org/ver10/device/wsdl
Saving ./DeviceBinding.nsmap namespace mapping table
Using tev service name: PullPointSubscriptionBinding
Using tev service style: document
Using tev service encoding: literal
Using tev schema namespace: http://www.onvif.org/ver10/events/wsdl
Saving ./PullPointSubscriptionBinding.nsmap namespace mapping table
Using timg service name: ImagingBinding
Using timg service style: document
Using timg service encoding: literal
Using timg schema namespace: http://www.onvif.org/ver20/imaging/wsdl
Saving ./ImagingBinding.nsmap namespace mapping table
Using tls service name: DisplayBinding
Using tls service style: document
Using tls service encoding: literal
Using tls schema namespace: http://www.onvif.org/ver10/display/wsdl
Saving ./DisplayBinding.nsmap namespace mapping table
Using tmd service name: DeviceIOBinding
Using tmd service style: document
Using tmd service encoding: literal
Using tmd schema namespace: http://www.onvif.org/ver10/deviceIO/wsdl
Saving ./DeviceIOBinding.nsmap namespace mapping table
Using tptz service name: PTZBinding
Using tptz service style: document
Using tptz service encoding: literal
Using tptz schema namespace: http://www.onvif.org/ver20/ptz/wsdl
Saving ./PTZBinding.nsmap namespace mapping table
Using trc service name: RecordingBinding
Using trc service style: document
Using trc service encoding: literal
Using trc schema namespace: http://www.onvif.org/ver10/recording/wsdl
Saving ./RecordingBinding.nsmap namespace mapping table
Using trp service name: ReplayBinding
Using trp service style: document
Using trp service encoding: literal
Using trp schema namespace: http://www.onvif.org/ver10/replay/wsdl
Saving ./ReplayBinding.nsmap namespace mapping table
Using trt service name: MediaBinding
Using trt service style: document
Using trt service encoding: literal
Using trt schema namespace: http://www.onvif.org/ver10/media/wsdl
Saving ./MediaBinding.nsmap namespace mapping table
Using trv service name: ReceiverBinding
Using trv service style: document
Using trv service encoding: literal
Using trv schema namespace: http://www.onvif.org/ver10/receiver/wsdl
Saving ./ReceiverBinding.nsmap namespace mapping table
Using tse service name: SearchBinding
Using tse service style: document
Using tse service encoding: literal
Using tse schema namespace: http://www.onvif.org/ver10/search/wsdl
Saving ./SearchBinding.nsmap namespace mapping table
Saving ./soapClient.c client call stub functions
Saving ./soapServer.c server request dispatcher
Saving ./soapC.c serialization functionsCompilation successful (2 warnings)

生成完成,警告不用管

解释:../gsoap:../gsoap/import/:../gsoap/custom/  这个相对路径是gsoap源码的路径(已经编译和安装过后的gsoap),其实就是在onvif目录下编译,需要使用gsoap的源码支撑,来生成对应的文件。

结果如下:

删除soapServer.c,不然编译会报以下错误

soapServer.o:在函数‘soap_serve_SOAP_ENV__Fault’中:
soapServer.c:(.text+0x4cbd):对‘SOAP_ENV__Fault’未定义的引用
soapServer.o:在函数‘soap_serve___wsdd__Hello’中:
soapServer.c:(.text+0x4db8):对‘__wsdd__Hello’未定义的引用
soapServer.o:在函数‘soap_serve___wsdd__Bye’中:
soapServer.c:(.text+0x4eab):对‘__wsdd__Bye’未定义的引用
soapServer.o:在函数‘soap_serve___wsdd__Probe’中:
soapServer.c:(.text+0x4f9e):对‘__wsdd__Probe’未定义的引用
soapServer.o:在函数‘soap_serve___wsdd__ProbeMatches’中:
soapServer.c:(.text+0x5091):对‘__wsdd__ProbeMatches’未定义的引用
soapServer.o:在函数‘soap_serve___wsdd__Resolve’中:
soapServer.c:(.text+0x5184):对‘__wsdd__Resolve’未定义的引用
soapServer.o:在函数‘soap_serve___wsdd__ResolveMatches’中:
soapServer.c:(.text+0x5277):对‘__wsdd__ResolveMatches’未定义的引用
soapServer.o:在函数‘soap_serve_SOAP_ENV__Fault_alex’中:
soapServer.c:(.text+0x5395):对‘SOAP_ENV__Fault_alex’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetServiceCapabilities’中:
soapServer.c:(.text+0x54aa):对‘__tad__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tad__DeleteAnalyticsEngineControl’中:
soapServer.c:(.text+0x5745):对‘__tad__DeleteAnalyticsEngineControl’未定义的引用
soapServer.o:在函数‘soap_serve___tad__CreateAnalyticsEngineControl’中:
soapServer.c:(.text+0x59e0):对‘__tad__CreateAnalyticsEngineControl’未定义的引用
soapServer.o:在函数‘soap_serve___tad__SetAnalyticsEngineControl’中:
soapServer.c:(.text+0x5c7b):对‘__tad__SetAnalyticsEngineControl’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsEngineControl’中:
soapServer.c:(.text+0x5f16):对‘__tad__GetAnalyticsEngineControl’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsEngineControls’中:
soapServer.c:(.text+0x61b1):对‘__tad__GetAnalyticsEngineControls’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsEngine’中:
soapServer.c:(.text+0x644c):对‘__tad__GetAnalyticsEngine’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsEngines’中:
soapServer.c:(.text+0x66e7):对‘__tad__GetAnalyticsEngines’未定义的引用
soapServer.o:在函数‘soap_serve___tad__SetVideoAnalyticsConfiguration’中:
soapServer.c:(.text+0x6982):对‘__tad__SetVideoAnalyticsConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tad__SetAnalyticsEngineInput’中:
soapServer.c:(.text+0x6c1d):对‘__tad__SetAnalyticsEngineInput’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsEngineInput’中:
soapServer.c:(.text+0x6eb8):对‘__tad__GetAnalyticsEngineInput’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsEngineInputs’中:
soapServer.c:(.text+0x7153):对‘__tad__GetAnalyticsEngineInputs’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsDeviceStreamUri’中:
soapServer.c:(.text+0x73ee):对‘__tad__GetAnalyticsDeviceStreamUri’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetVideoAnalyticsConfiguration’中:
soapServer.c:(.text+0x7689):对‘__tad__GetVideoAnalyticsConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tad__CreateAnalyticsEngineInputs’中:
soapServer.c:(.text+0x7924):对‘__tad__CreateAnalyticsEngineInputs’未定义的引用
soapServer.o:在函数‘soap_serve___tad__DeleteAnalyticsEngineInputs’中:
soapServer.c:(.text+0x7bbf):对‘__tad__DeleteAnalyticsEngineInputs’未定义的引用
soapServer.o:在函数‘soap_serve___tad__GetAnalyticsState’中:
soapServer.c:(.text+0x7e5a):对‘__tad__GetAnalyticsState’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetSupportedRules’中:
soapServer.c:(.text+0x80f5):对‘__tan__GetSupportedRules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__CreateRules’中:
soapServer.c:(.text+0x8390):对‘__tan__CreateRules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__DeleteRules’中:
soapServer.c:(.text+0x862b):对‘__tan__DeleteRules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetRules’中:
soapServer.c:(.text+0x88c6):对‘__tan__GetRules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetRuleOptions’中:
soapServer.c:(.text+0x8b61):对‘__tan__GetRuleOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tan__ModifyRules’中:
soapServer.c:(.text+0x8dfc):对‘__tan__ModifyRules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetServiceCapabilities’中:
soapServer.c:(.text+0x9097):对‘__tan__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetSupportedAnalyticsModules’中:
soapServer.c:(.text+0x9332):对‘__tan__GetSupportedAnalyticsModules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__CreateAnalyticsModules’中:
soapServer.c:(.text+0x95cd):对‘__tan__CreateAnalyticsModules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__DeleteAnalyticsModules’中:
soapServer.c:(.text+0x9868):对‘__tan__DeleteAnalyticsModules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetAnalyticsModules’中:
soapServer.c:(.text+0x9b03):对‘__tan__GetAnalyticsModules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetAnalyticsModuleOptions’中:
soapServer.c:(.text+0x9d9e):对‘__tan__GetAnalyticsModuleOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tan__ModifyAnalyticsModules’中:
soapServer.c:(.text+0xa039):对‘__tan__ModifyAnalyticsModules’未定义的引用
soapServer.o:在函数‘soap_serve___tan__GetSupportedMetadata’中:
soapServer.c:(.text+0xa2d4):对‘__tan__GetSupportedMetadata’未定义的引用
soapServer.o:在函数‘soap_serve___tdn__Hello’中:
soapServer.c:(.text+0xa5b6):对‘__tdn__Hello’未定义的引用
soapServer.o:在函数‘soap_serve___tdn__Bye’中:
soapServer.c:(.text+0xa902):对‘__tdn__Bye’未定义的引用
soapServer.o:在函数‘soap_serve___tdn__Probe’中:
soapServer.c:(.text+0xac08):对‘__tdn__Probe’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetServices’中:
soapServer.c:(.text+0xaea3):对‘__tds__GetServices’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetServiceCapabilities’中:
soapServer.c:(.text+0xb13e):对‘__tds__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDeviceInformation’中:
soapServer.c:(.text+0xb3d9):对‘__tds__GetDeviceInformation’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetSystemDateAndTime’中:
soapServer.c:(.text+0xb674):对‘__tds__SetSystemDateAndTime’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetSystemDateAndTime’中:
soapServer.c:(.text+0xb90f):对‘__tds__GetSystemDateAndTime’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetSystemFactoryDefault’中:
soapServer.c:(.text+0xbbaa):对‘__tds__SetSystemFactoryDefault’未定义的引用
soapServer.o:在函数‘soap_serve___tds__UpgradeSystemFirmware’中:
soapServer.c:(.text+0xbe45):对‘__tds__UpgradeSystemFirmware’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SystemReboot’中:
soapServer.c:(.text+0xc0e0):对‘__tds__SystemReboot’未定义的引用
soapServer.o:在函数‘soap_serve___tds__RestoreSystem’中:
soapServer.c:(.text+0xc37b):对‘__tds__RestoreSystem’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetSystemBackup’中:
soapServer.c:(.text+0xc616):对‘__tds__GetSystemBackup’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetSystemLog’中:
soapServer.c:(.text+0xc8b1):对‘__tds__GetSystemLog’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetSystemSupportInformation’中:
soapServer.c:(.text+0xcb4c):对‘__tds__GetSystemSupportInformation’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetScopes’中:
soapServer.c:(.text+0xcde7):对‘__tds__GetScopes’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetScopes’中:
soapServer.c:(.text+0xd082):对‘__tds__SetScopes’未定义的引用
soapServer.o:在函数‘soap_serve___tds__AddScopes’中:
soapServer.c:(.text+0xd31d):对‘__tds__AddScopes’未定义的引用
soapServer.o:在函数‘soap_serve___tds__RemoveScopes’中:
soapServer.c:(.text+0xd5b8):对‘__tds__RemoveScopes’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDiscoveryMode’中:
soapServer.c:(.text+0xd853):对‘__tds__GetDiscoveryMode’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetDiscoveryMode’中:
soapServer.c:(.text+0xdaee):对‘__tds__SetDiscoveryMode’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetRemoteDiscoveryMode’中:
soapServer.c:(.text+0xdd89):对‘__tds__GetRemoteDiscoveryMode’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetRemoteDiscoveryMode’中:
soapServer.c:(.text+0xe024):对‘__tds__SetRemoteDiscoveryMode’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDPAddresses’中:
soapServer.c:(.text+0xe2bf):对‘__tds__GetDPAddresses’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetEndpointReference’中:
soapServer.c:(.text+0xe55a):对‘__tds__GetEndpointReference’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetRemoteUser’中:
soapServer.c:(.text+0xe7f5):对‘__tds__GetRemoteUser’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetRemoteUser’中:
soapServer.c:(.text+0xea90):对‘__tds__SetRemoteUser’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetUsers’中:
soapServer.c:(.text+0xed2b):对‘__tds__GetUsers’未定义的引用
soapServer.o:在函数‘soap_serve___tds__CreateUsers’中:
soapServer.c:(.text+0xefc6):对‘__tds__CreateUsers’未定义的引用
soapServer.o:在函数‘soap_serve___tds__DeleteUsers’中:
soapServer.c:(.text+0xf261):对‘__tds__DeleteUsers’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetUser’中:
soapServer.c:(.text+0xf4fc):对‘__tds__SetUser’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetWsdlUrl’中:
soapServer.c:(.text+0xf797):对‘__tds__GetWsdlUrl’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetPasswordComplexityOptions’中:
soapServer.c:(.text+0xfa32):对‘__tds__GetPasswordComplexityOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetPasswordComplexityConfiguration’中:
soapServer.c:(.text+0xfccd):对‘__tds__GetPasswordComplexityConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetPasswordComplexityConfiguration’中:
soapServer.c:(.text+0xff68):对‘__tds__SetPasswordComplexityConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetPasswordHistoryConfiguration’中:
soapServer.c:(.text+0x10203):对‘__tds__GetPasswordHistoryConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetPasswordHistoryConfiguration’中:
soapServer.c:(.text+0x1049e):对‘__tds__SetPasswordHistoryConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetAuthFailureWarningOptions’中:
soapServer.c:(.text+0x10739):对‘__tds__GetAuthFailureWarningOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetAuthFailureWarningConfiguration’中:
soapServer.c:(.text+0x109d4):对‘__tds__GetAuthFailureWarningConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetAuthFailureWarningConfiguration’中:
soapServer.c:(.text+0x10c6f):对‘__tds__SetAuthFailureWarningConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetCapabilities’中:
soapServer.c:(.text+0x10f0a):对‘__tds__GetCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetDPAddresses’中:
soapServer.c:(.text+0x111a5):对‘__tds__SetDPAddresses’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetHostname’中:
soapServer.c:(.text+0x11440):对‘__tds__GetHostname’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetHostname’中:
soapServer.c:(.text+0x116db):对‘__tds__SetHostname’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetHostnameFromDHCP’中:
soapServer.c:(.text+0x11976):对‘__tds__SetHostnameFromDHCP’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDNS’中:
soapServer.c:(.text+0x11c11):对‘__tds__GetDNS’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetDNS’中:
soapServer.c:(.text+0x11eac):对‘__tds__SetDNS’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetNTP’中:
soapServer.c:(.text+0x12147):对‘__tds__GetNTP’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetNTP’中:
soapServer.c:(.text+0x123e2):对‘__tds__SetNTP’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDynamicDNS’中:
soapServer.c:(.text+0x1267d):对‘__tds__GetDynamicDNS’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetDynamicDNS’中:
soapServer.c:(.text+0x12918):对‘__tds__SetDynamicDNS’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetNetworkInterfaces’中:
soapServer.c:(.text+0x12bb3):对‘__tds__GetNetworkInterfaces’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetNetworkInterfaces’中:
soapServer.c:(.text+0x12e4e):对‘__tds__SetNetworkInterfaces’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetNetworkProtocols’中:
soapServer.c:(.text+0x130e9):对‘__tds__GetNetworkProtocols’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetNetworkProtocols’中:
soapServer.c:(.text+0x13384):对‘__tds__SetNetworkProtocols’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetNetworkDefaultGateway’中:
soapServer.c:(.text+0x1361f):对‘__tds__GetNetworkDefaultGateway’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetNetworkDefaultGateway’中:
soapServer.c:(.text+0x138ba):对‘__tds__SetNetworkDefaultGateway’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetZeroConfiguration’中:
soapServer.c:(.text+0x13b55):对‘__tds__GetZeroConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetZeroConfiguration’中:
soapServer.c:(.text+0x13df0):对‘__tds__SetZeroConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetIPAddressFilter’中:
soapServer.c:(.text+0x1408b):对‘__tds__GetIPAddressFilter’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetIPAddressFilter’中:
soapServer.c:(.text+0x14326):对‘__tds__SetIPAddressFilter’未定义的引用
soapServer.o:在函数‘soap_serve___tds__AddIPAddressFilter’中:
soapServer.c:(.text+0x145c1):对‘__tds__AddIPAddressFilter’未定义的引用
soapServer.o:在函数‘soap_serve___tds__RemoveIPAddressFilter’中:
soapServer.c:(.text+0x1485c):对‘__tds__RemoveIPAddressFilter’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetAccessPolicy’中:
soapServer.c:(.text+0x14af7):对‘__tds__GetAccessPolicy’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetAccessPolicy’中:
soapServer.c:(.text+0x14d92):对‘__tds__SetAccessPolicy’未定义的引用
soapServer.o:在函数‘soap_serve___tds__CreateCertificate’中:
soapServer.c:(.text+0x1502d):对‘__tds__CreateCertificate’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetCertificates’中:
soapServer.c:(.text+0x152c8):对‘__tds__GetCertificates’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetCertificatesStatus’中:
soapServer.c:(.text+0x15563):对‘__tds__GetCertificatesStatus’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetCertificatesStatus’中:
soapServer.c:(.text+0x157fe):对‘__tds__SetCertificatesStatus’未定义的引用
soapServer.o:在函数‘soap_serve___tds__DeleteCertificates’中:
soapServer.c:(.text+0x15a99):对‘__tds__DeleteCertificates’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetPkcs10Request’中:
soapServer.c:(.text+0x15d34):对‘__tds__GetPkcs10Request’未定义的引用
soapServer.o:在函数‘soap_serve___tds__LoadCertificates’中:
soapServer.c:(.text+0x15fcf):对‘__tds__LoadCertificates’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetClientCertificateMode’中:
soapServer.c:(.text+0x1626a):对‘__tds__GetClientCertificateMode’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetClientCertificateMode’中:
soapServer.c:(.text+0x16505):对‘__tds__SetClientCertificateMode’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetRelayOutputs’中:
soapServer.c:(.text+0x167a0):对‘__tds__GetRelayOutputs’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetRelayOutputSettings’中:
soapServer.c:(.text+0x16a3b):对‘__tds__SetRelayOutputSettings’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetRelayOutputState’中:
soapServer.c:(.text+0x16cd6):对‘__tds__SetRelayOutputState’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SendAuxiliaryCommand’中:
soapServer.c:(.text+0x16f71):对‘__tds__SendAuxiliaryCommand’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetCACertificates’中:
soapServer.c:(.text+0x1720c):对‘__tds__GetCACertificates’未定义的引用
soapServer.o:在函数‘soap_serve___tds__LoadCertificateWithPrivateKey’中:
soapServer.c:(.text+0x174a7):对‘__tds__LoadCertificateWithPrivateKey’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetCertificateInformation’中:
soapServer.c:(.text+0x17742):对‘__tds__GetCertificateInformation’未定义的引用
soapServer.o:在函数‘soap_serve___tds__LoadCACertificates’中:
soapServer.c:(.text+0x179dd):对‘__tds__LoadCACertificates’未定义的引用
soapServer.o:在函数‘soap_serve___tds__CreateDot1XConfiguration’中:
soapServer.c:(.text+0x17c78):对‘__tds__CreateDot1XConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetDot1XConfiguration’中:
soapServer.c:(.text+0x17f13):对‘__tds__SetDot1XConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDot1XConfiguration’中:
soapServer.c:(.text+0x181ae):对‘__tds__GetDot1XConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDot1XConfigurations’中:
soapServer.c:(.text+0x18449):对‘__tds__GetDot1XConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___tds__DeleteDot1XConfiguration’中:
soapServer.c:(.text+0x186e4):对‘__tds__DeleteDot1XConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDot11Capabilities’中:
soapServer.c:(.text+0x1897f):对‘__tds__GetDot11Capabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetDot11Status’中:
soapServer.c:(.text+0x18c1a):对‘__tds__GetDot11Status’未定义的引用
soapServer.o:在函数‘soap_serve___tds__ScanAvailableDot11Networks’中:
soapServer.c:(.text+0x18eb5):对‘__tds__ScanAvailableDot11Networks’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetSystemUris’中:
soapServer.c:(.text+0x19150):对‘__tds__GetSystemUris’未定义的引用
soapServer.o:在函数‘soap_serve___tds__StartFirmwareUpgrade’中:
soapServer.c:(.text+0x193eb):对‘__tds__StartFirmwareUpgrade’未定义的引用
soapServer.o:在函数‘soap_serve___tds__StartSystemRestore’中:
soapServer.c:(.text+0x19686):对‘__tds__StartSystemRestore’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetStorageConfigurations’中:
soapServer.c:(.text+0x19921):对‘__tds__GetStorageConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___tds__CreateStorageConfiguration’中:
soapServer.c:(.text+0x19bbc):对‘__tds__CreateStorageConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetStorageConfiguration’中:
soapServer.c:(.text+0x19e57):对‘__tds__GetStorageConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetStorageConfiguration’中:
soapServer.c:(.text+0x1a0f2):对‘__tds__SetStorageConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__DeleteStorageConfiguration’中:
soapServer.c:(.text+0x1a38d):对‘__tds__DeleteStorageConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tds__GetGeoLocation’中:
soapServer.c:(.text+0x1a628):对‘__tds__GetGeoLocation’未定义的引用
soapServer.o:在函数‘soap_serve___tds__SetGeoLocation’中:
soapServer.c:(.text+0x1a8c3):对‘__tds__SetGeoLocation’未定义的引用
soapServer.o:在函数‘soap_serve___tds__DeleteGeoLocation’中:
soapServer.c:(.text+0x1ab5e):对‘__tds__DeleteGeoLocation’未定义的引用
soapServer.o:在函数‘soap_serve___tev__PullMessages’中:
soapServer.c:(.text+0x1adf9):对‘__tev__PullMessages’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Seek’中:
soapServer.c:(.text+0x1b094):对‘__tev__Seek’未定义的引用
soapServer.o:在函数‘soap_serve___tev__SetSynchronizationPoint’中:
soapServer.c:(.text+0x1b32f):对‘__tev__SetSynchronizationPoint’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Unsubscribe’中:
soapServer.c:(.text+0x1b5ca):对‘__tev__Unsubscribe’未定义的引用
soapServer.o:在函数‘soap_serve___tev__GetServiceCapabilities’中:
soapServer.c:(.text+0x1b865):对‘__tev__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tev__CreatePullPointSubscription’中:
soapServer.c:(.text+0x1bb00):对‘__tev__CreatePullPointSubscription’未定义的引用
soapServer.o:在函数‘soap_serve___tev__GetEventProperties’中:
soapServer.c:(.text+0x1bdbc):对‘__tev__GetEventProperties’未定义的引用
soapServer.o:在函数‘soap_serve___tev__AddEventBroker’中:
soapServer.c:(.text+0x1c0b4):对‘__tev__AddEventBroker’未定义的引用
soapServer.o:在函数‘soap_serve___tev__DeleteEventBroker’中:
soapServer.c:(.text+0x1c34f):对‘__tev__DeleteEventBroker’未定义的引用
soapServer.o:在函数‘soap_serve___tev__GetEventBrokers’中:
soapServer.c:(.text+0x1c5ea):对‘__tev__GetEventBrokers’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Renew’中:
soapServer.c:(.text+0x1c885):对‘__tev__Renew’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Unsubscribe_’中:
soapServer.c:(.text+0x1cb20):对‘__tev__Unsubscribe_’未定义的引用
soapServer.o:在函数‘soap_serve___tev(bool, short, char, long double, int, bool,...) static __restrict’中:
soapServer.c:(.text+0x1cdbb):对‘__tev__Subscribe’未定义的引用
soapServer.o:在函数‘soap_serve___tev__GetCurrentMessage’中:
soapServer.c:(.text+0x1d056):对‘__tev__GetCurrentMessage’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Notify’中:
soapServer.c:(.text+0x1d2d7):对‘__tev__Notify’未定义的引用
soapServer.o:在函数‘soap_serve___tev__GetMessages’中:
soapServer.c:(.text+0x1d3e4):对‘__tev__GetMessages’未定义的引用
soapServer.o:在函数‘soap_serve___tev__DestroyPullPoint’中:
soapServer.c:(.text+0x1d67f):对‘__tev__DestroyPullPoint’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Notify_’中:
soapServer.c:(.text+0x1d900):对‘__tev__Notify_’未定义的引用
soapServer.o:在函数‘soap_serve___tev__CreatePullPoint’中:
soapServer.c:(.text+0x1da0d):对‘__tev__CreatePullPoint’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Renew_’中:
soapServer.c:(.text+0x1dca8):对‘__tev__Renew_’未定义的引用
soapServer.o:在函数‘soap_serve___tev__Unsubscribe__’中:
soapServer.c:(.text+0x1df43):对‘__tev__Unsubscribe__’未定义的引用
soapServer.o:在函数‘soap_serve___tev__PauseSubscription’中:
soapServer.c:(.text+0x1e1de):对‘__tev__PauseSubscription’未定义的引用
soapServer.o:在函数‘soap_serve___tev__ResumeSubscription’中:
soapServer.c:(.text+0x1e479):对‘__tev__ResumeSubscription’未定义的引用
soapServer.o:在函数‘soap_serve___timg__GetServiceCapabilities’中:
soapServer.c:(.text+0x1e714):对‘__timg__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___timg__GetImagingSettings’中:
soapServer.c:(.text+0x1e9af):对‘__timg__GetImagingSettings’未定义的引用
soapServer.o:在函数‘soap_serve___timg__SetImagingSettings’中:
soapServer.c:(.text+0x1ec4a):对‘__timg__SetImagingSettings’未定义的引用
soapServer.o:在函数‘soap_serve___timg__GetOptions’中:
soapServer.c:(.text+0x1eee5):对‘__timg__GetOptions’未定义的引用
soapServer.o:在函数‘soap_serve___timg__Move’中:
soapServer.c:(.text+0x1f180):对‘__timg__Move’未定义的引用
soapServer.o:在函数‘soap_serve___timg__Stop’中:
soapServer.c:(.text+0x1f41b):对‘__timg__Stop’未定义的引用
soapServer.o:在函数‘soap_serve___timg__GetStatus’中:
soapServer.c:(.text+0x1f6b6):对‘__timg__GetStatus’未定义的引用
soapServer.o:在函数‘soap_serve___timg__GetMoveOptions’中:
soapServer.c:(.text+0x1f951):对‘__timg__GetMoveOptions’未定义的引用
soapServer.o:在函数‘soap_serve___timg__GetPresets’中:
soapServer.c:(.text+0x1fbec):对‘__timg__GetPresets’未定义的引用
soapServer.o:在函数‘soap_serve___timg__GetCurrentPreset’中:
soapServer.c:(.text+0x1fe87):对‘__timg__GetCurrentPreset’未定义的引用
soapServer.o:在函数‘soap_serve___timg__SetCurrentPreset’中:
soapServer.c:(.text+0x20122):对‘__timg__SetCurrentPreset’未定义的引用
soapServer.o:在函数‘soap_serve___tls__GetServiceCapabilities’中:
soapServer.c:(.text+0x203bd):对‘__tls__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tls__GetLayout’中:
soapServer.c:(.text+0x20658):对‘__tls__GetLayout’未定义的引用
soapServer.o:在函数‘soap_serve___tls__SetLayout’中:
soapServer.c:(.text+0x208f3):对‘__tls__SetLayout’未定义的引用
soapServer.o:在函数‘soap_serve___tls__GetDisplayOptions’中:
soapServer.c:(.text+0x20b8e):对‘__tls__GetDisplayOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tls__GetPaneConfigurations’中:
soapServer.c:(.text+0x20e29):对‘__tls__GetPaneConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___tls__GetPaneConfiguration’中:
soapServer.c:(.text+0x210c4):对‘__tls__GetPaneConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tls__SetPaneConfigurations’中:
soapServer.c:(.text+0x2135f):对‘__tls__SetPaneConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___tls__SetPaneConfiguration’中:
soapServer.c:(.text+0x215fa):对‘__tls__SetPaneConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tls__CreatePaneConfiguration’中:
soapServer.c:(.text+0x21895):对‘__tls__CreatePaneConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tls__DeletePaneConfiguration’中:
soapServer.c:(.text+0x21b30):对‘__tls__DeletePaneConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetServiceCapabilities’中:
soapServer.c:(.text+0x21dcb):对‘__tmd__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetRelayOutputOptions’中:
soapServer.c:(.text+0x22066):对‘__tmd__GetRelayOutputOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetAudioSources’中:
soapServer.c:(.text+0x22301):对‘__tmd__GetAudioSources’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetAudioOutputs’中:
soapServer.c:(.text+0x2259c):对‘__tmd__GetAudioOutputs’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetVideoSources’中:
soapServer.c:(.text+0x22837):对‘__tmd__GetVideoSources’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetVideoOutputs’中:
soapServer.c:(.text+0x22ad2):对‘__tmd__GetVideoOutputs’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetVideoSourceConfiguration’中:
soapServer.c:(.text+0x22d6d):对‘__tmd__GetVideoSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetVideoOutputConfiguration’中:
soapServer.c:(.text+0x23008):对‘__tmd__GetVideoOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetAudioSourceConfiguration’中:
soapServer.c:(.text+0x232a3):对‘__tmd__GetAudioSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetAudioOutputConfiguration’中:
soapServer.c:(.text+0x2353e):对‘__tmd__GetAudioOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetVideoSourceConfiguration’中:
soapServer.c:(.text+0x237d9):对‘__tmd__SetVideoSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetVideoOutputConfiguration’中:
soapServer.c:(.text+0x23a74):对‘__tmd__SetVideoOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetAudioSourceConfiguration’中:
soapServer.c:(.text+0x23d0f):对‘__tmd__SetAudioSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetAudioOutputConfiguration’中:
soapServer.c:(.text+0x23faa):对‘__tmd__SetAudioOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetVideoSourceConfigurationOptions’中:
soapServer.c:(.text+0x24245):对‘__tmd__GetVideoSourceConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetVideoOutputConfigurationOptions’中:
soapServer.c:(.text+0x244e0):对‘__tmd__GetVideoOutputConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetAudioSourceConfigurationOptions’中:
soapServer.c:(.text+0x2477b):对‘__tmd__GetAudioSourceConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetAudioOutputConfigurationOptions’中:
soapServer.c:(.text+0x24a16):对‘__tmd__GetAudioOutputConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetRelayOutputs’中:
soapServer.c:(.text+0x24cb1):对‘__tmd__GetRelayOutputs’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetRelayOutputSettings’中:
soapServer.c:(.text+0x24f4c):对‘__tmd__SetRelayOutputSettings’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetRelayOutputState’中:
soapServer.c:(.text+0x251e7):对‘__tmd__SetRelayOutputState’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetDigitalInputs’中:
soapServer.c:(.text+0x25482):对‘__tmd__GetDigitalInputs’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetDigitalInputConfigurationOptions’中:
soapServer.c:(.text+0x2571d):对‘__tmd__GetDigitalInputConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetDigitalInputConfigurations’中:
soapServer.c:(.text+0x259b8):对‘__tmd__SetDigitalInputConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetSerialPorts’中:
soapServer.c:(.text+0x25c53):对‘__tmd__GetSerialPorts’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetSerialPortConfiguration’中:
soapServer.c:(.text+0x25eee):对‘__tmd__GetSerialPortConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SetSerialPortConfiguration’中:
soapServer.c:(.text+0x26189):对‘__tmd__SetSerialPortConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__GetSerialPortConfigurationOptions’中:
soapServer.c:(.text+0x26424):对‘__tmd__GetSerialPortConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tmd__SendReceiveSerialCommand’中:
soapServer.c:(.text+0x266bf):对‘__tmd__SendReceiveSerialCommand’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetServiceCapabilities’中:
soapServer.c:(.text+0x2695a):对‘__tptz__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetConfigurations’中:
soapServer.c:(.text+0x26bf5):对‘__tptz__GetConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetPresets’中:
soapServer.c:(.text+0x26e90):对‘__tptz__GetPresets’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__SetPreset’中:
soapServer.c:(.text+0x2712b):对‘__tptz__SetPreset’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__RemovePreset’中:
soapServer.c:(.text+0x273c6):对‘__tptz__RemovePreset’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GotoPreset’中:
soapServer.c:(.text+0x27661):对‘__tptz__GotoPreset’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetStatus’中:
soapServer.c:(.text+0x278fc):对‘__tptz__GetStatus’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetConfiguration’中:
soapServer.c:(.text+0x27b97):对‘__tptz__GetConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetNodes’中:
soapServer.c:(.text+0x27e32):对‘__tptz__GetNodes’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetNode’中:
soapServer.c:(.text+0x280cd):对‘__tptz__GetNode’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__SetConfiguration’中:
soapServer.c:(.text+0x28368):对‘__tptz__SetConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetConfigurationOptions’中:
soapServer.c:(.text+0x28603):对‘__tptz__GetConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GotoHomePosition’中:
soapServer.c:(.text+0x2889e):对‘__tptz__GotoHomePosition’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__SetHomePosition’中:
soapServer.c:(.text+0x28b39):对‘__tptz__SetHomePosition’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__ContinuousMove’中:
soapServer.c:(.text+0x28dd4):对‘__tptz__ContinuousMove’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__RelativeMove’中:
soapServer.c:(.text+0x2906f):对‘__tptz__RelativeMove’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__SendAuxiliaryCommand’中:
soapServer.c:(.text+0x2930a):对‘__tptz__SendAuxiliaryCommand’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__AbsoluteMove’中:
soapServer.c:(.text+0x295a5):对‘__tptz__AbsoluteMove’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GeoMove’中:
soapServer.c:(.text+0x29840):对‘__tptz__GeoMove’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__Stop’中:
soapServer.c:(.text+0x29adb):对‘__tptz__Stop’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetPresetTours’中:
soapServer.c:(.text+0x29d76):对‘__tptz__GetPresetTours’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetPresetTour’中:
soapServer.c:(.text+0x2a011):对‘__tptz__GetPresetTour’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetPresetTourOptions’中:
soapServer.c:(.text+0x2a2ac):对‘__tptz__GetPresetTourOptions’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__CreatePresetTour’中:
soapServer.c:(.text+0x2a547):对‘__tptz__CreatePresetTour’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__ModifyPresetTour’中:
soapServer.c:(.text+0x2a7e2):对‘__tptz__ModifyPresetTour’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__OperatePresetTour’中:
soapServer.c:(.text+0x2aa7d):对‘__tptz__OperatePresetTour’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__RemovePresetTour’中:
soapServer.c:(.text+0x2ad18):对‘__tptz__RemovePresetTour’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__GetCompatibleConfigurations’中:
soapServer.c:(.text+0x2afb3):对‘__tptz__GetCompatibleConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___tptz__MoveAndStartTracking’中:
soapServer.c:(.text+0x2b24e):对‘__tptz__MoveAndStartTracking’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetServiceCapabilities’中:
soapServer.c:(.text+0x2b4e9):对‘__trc__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___trc__CreateRecording’中:
soapServer.c:(.text+0x2b784):对‘__trc__CreateRecording’未定义的引用
soapServer.o:在函数‘soap_serve___trc__DeleteRecording’中:
soapServer.c:(.text+0x2ba1f):对‘__trc__DeleteRecording’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetRecordings’中:
soapServer.c:(.text+0x2bcba):对‘__trc__GetRecordings’未定义的引用
soapServer.o:在函数‘soap_serve___trc__SetRecordingConfiguration’中:
soapServer.c:(.text+0x2bf55):对‘__trc__SetRecordingConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetRecordingConfiguration’中:
soapServer.c:(.text+0x2c1f0):对‘__trc__GetRecordingConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetRecordingOptions’中:
soapServer.c:(.text+0x2c48b):对‘__trc__GetRecordingOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trc__CreateTrack’中:
soapServer.c:(.text+0x2c726):对‘__trc__CreateTrack’未定义的引用
soapServer.o:在函数‘soap_serve___trc__DeleteTrack’中:
soapServer.c:(.text+0x2c9c1):对‘__trc__DeleteTrack’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetTrackConfiguration’中:
soapServer.c:(.text+0x2cc5c):对‘__trc__GetTrackConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trc__SetTrackConfiguration’中:
soapServer.c:(.text+0x2cef7):对‘__trc__SetTrackConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trc__CreateRecordingJob’中:
soapServer.c:(.text+0x2d192):对‘__trc__CreateRecordingJob’未定义的引用
soapServer.o:在函数‘soap_serve___trc__DeleteRecordingJob’中:
soapServer.c:(.text+0x2d42d):对‘__trc__DeleteRecordingJob’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetRecordingJobs’中:
soapServer.c:(.text+0x2d6c8):对‘__trc__GetRecordingJobs’未定义的引用
soapServer.o:在函数‘soap_serve___trc__SetRecordingJobConfiguration’中:
soapServer.c:(.text+0x2d963):对‘__trc__SetRecordingJobConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetRecordingJobConfiguration’中:
soapServer.c:(.text+0x2dbfe):对‘__trc__GetRecordingJobConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trc__SetRecordingJobMode’中:
soapServer.c:(.text+0x2de99):对‘__trc__SetRecordingJobMode’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetRecordingJobState’中:
soapServer.c:(.text+0x2e134):对‘__trc__GetRecordingJobState’未定义的引用
soapServer.o:在函数‘soap_serve___trc__ExportRecordedData’中:
soapServer.c:(.text+0x2e3cf):对‘__trc__ExportRecordedData’未定义的引用
soapServer.o:在函数‘soap_serve___trc__StopExportRecordedData’中:
soapServer.c:(.text+0x2e66a):对‘__trc__StopExportRecordedData’未定义的引用
soapServer.o:在函数‘soap_serve___trc__GetExportRecordedDataState’中:
soapServer.c:(.text+0x2e905):对‘__trc__GetExportRecordedDataState’未定义的引用
soapServer.o:在函数‘soap_serve___trp__GetServiceCapabilities’中:
soapServer.c:(.text+0x2eba0):对‘__trp__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___trp__GetReplayUri’中:
soapServer.c:(.text+0x2ee3b):对‘__trp__GetReplayUri’未定义的引用
soapServer.o:在函数‘soap_serve___trp__GetReplayConfiguration’中:
soapServer.c:(.text+0x2f0d6):对‘__trp__GetReplayConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trp__SetReplayConfiguration’中:
soapServer.c:(.text+0x2f371):对‘__trp__SetReplayConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetServiceCapabilities’中:
soapServer.c:(.text+0x2f60c):对‘__trt__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoSources’中:
soapServer.c:(.text+0x2f8a7):对‘__trt__GetVideoSources’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioSources’中:
soapServer.c:(.text+0x2fb42):对‘__trt__GetAudioSources’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioOutputs’中:
soapServer.c:(.text+0x2fddd):对‘__trt__GetAudioOutputs’未定义的引用
soapServer.o:在函数‘soap_serve___trt__CreateProfile’中:
soapServer.c:(.text+0x30078):对‘__trt__CreateProfile’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetProfile’中:
soapServer.c:(.text+0x30313):对‘__trt__GetProfile’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetProfiles’中:
soapServer.c:(.text+0x305ae):对‘__trt__GetProfiles’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddVideoEncoderConfiguration’中:
soapServer.c:(.text+0x30849):对‘__trt__AddVideoEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddVideoSourceConfiguration’中:
soapServer.c:(.text+0x30ae4):对‘__trt__AddVideoSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddAudioEncoderConfiguration’中:
soapServer.c:(.text+0x30d7f):对‘__trt__AddAudioEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddAudioSourceConfiguration’中:
soapServer.c:(.text+0x3101a):对‘__trt__AddAudioSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddPTZConfiguration’中:
soapServer.c:(.text+0x312b5):对‘__trt__AddPTZConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddVideoAnalyticsConfiguration’中:
soapServer.c:(.text+0x31550):对‘__trt__AddVideoAnalyticsConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddMetadataConfiguration’中:
soapServer.c:(.text+0x317eb):对‘__trt__AddMetadataConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddAudioOutputConfiguration’中:
soapServer.c:(.text+0x31a86):对‘__trt__AddAudioOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__AddAudioDecoderConfiguration’中:
soapServer.c:(.text+0x31d21):对‘__trt__AddAudioDecoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveVideoEncoderConfiguration’中:
soapServer.c:(.text+0x31fbc):对‘__trt__RemoveVideoEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveVideoSourceConfiguration’中:
soapServer.c:(.text+0x32257):对‘__trt__RemoveVideoSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveAudioEncoderConfiguration’中:
soapServer.c:(.text+0x324f2):对‘__trt__RemoveAudioEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveAudioSourceConfiguration’中:
soapServer.c:(.text+0x3278d):对‘__trt__RemoveAudioSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemovePTZConfiguration’中:
soapServer.c:(.text+0x32a28):对‘__trt__RemovePTZConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveVideoAnalyticsConfiguration’中:
soapServer.c:(.text+0x32cc3):对‘__trt__RemoveVideoAnalyticsConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveMetadataConfiguration’中:
soapServer.c:(.text+0x32f5e):对‘__trt__RemoveMetadataConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveAudioOutputConfiguration’中:
soapServer.c:(.text+0x331f9):对‘__trt__RemoveAudioOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__RemoveAudioDecoderConfiguration’中:
soapServer.c:(.text+0x33494):对‘__trt__RemoveAudioDecoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__DeleteProfile’中:
soapServer.c:(.text+0x3372f):对‘__trt__DeleteProfile’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoSourceConfigurations’中:
soapServer.c:(.text+0x339ca):对‘__trt__GetVideoSourceConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoEncoderConfigurations’中:
soapServer.c:(.text+0x33c65):对‘__trt__GetVideoEncoderConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioSourceConfigurations’中:
soapServer.c:(.text+0x33f00):对‘__trt__GetAudioSourceConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioEncoderConfigurations’中:
soapServer.c:(.text+0x3419b):对‘__trt__GetAudioEncoderConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoAnalyticsConfigurations’中:
soapServer.c:(.text+0x34436):对‘__trt__GetVideoAnalyticsConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetMetadataConfigurations’中:
soapServer.c:(.text+0x346d1):对‘__trt__GetMetadataConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioOutputConfigurations’中:
soapServer.c:(.text+0x3496c):对‘__trt__GetAudioOutputConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioDecoderConfigurations’中:
soapServer.c:(.text+0x34c07):对‘__trt__GetAudioDecoderConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoSourceConfiguration’中:
soapServer.c:(.text+0x34ea2):对‘__trt__GetVideoSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoEncoderConfiguration’中:
soapServer.c:(.text+0x3513d):对‘__trt__GetVideoEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioSourceConfiguration’中:
soapServer.c:(.text+0x353d8):对‘__trt__GetAudioSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioEncoderConfiguration’中:
soapServer.c:(.text+0x35673):对‘__trt__GetAudioEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoAnalyticsConfiguration’中:
soapServer.c:(.text+0x3590e):对‘__trt__GetVideoAnalyticsConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetMetadataConfiguration’中:
soapServer.c:(.text+0x35ba9):对‘__trt__GetMetadataConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioOutputConfiguration’中:
soapServer.c:(.text+0x35e44):对‘__trt__GetAudioOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioDecoderConfiguration’中:
soapServer.c:(.text+0x360df):对‘__trt__GetAudioDecoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleVideoEncoderConfigurations’中:
soapServer.c:(.text+0x3637a):对‘__trt__GetCompatibleVideoEncoderConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleVideoSourceConfigurations’中:
soapServer.c:(.text+0x36615):对‘__trt__GetCompatibleVideoSourceConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleAudioEncoderConfigurations’中:
soapServer.c:(.text+0x368b0):对‘__trt__GetCompatibleAudioEncoderConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleAudioSourceConfigurations’中:
soapServer.c:(.text+0x36b4b):对‘__trt__GetCompatibleAudioSourceConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleVideoAnalyticsConfigurations’中:
soapServer.c:(.text+0x36de6):对‘__trt__GetCompatibleVideoAnalyticsConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleMetadataConfigurations’中:
soapServer.c:(.text+0x37081):对‘__trt__GetCompatibleMetadataConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleAudioOutputConfigurations’中:
soapServer.c:(.text+0x3731c):对‘__trt__GetCompatibleAudioOutputConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetCompatibleAudioDecoderConfigurations’中:
soapServer.c:(.text+0x375b7):对‘__trt__GetCompatibleAudioDecoderConfigurations’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetVideoSourceConfiguration’中:
soapServer.c:(.text+0x37852):对‘__trt__SetVideoSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetVideoEncoderConfiguration’中:
soapServer.c:(.text+0x37aed):对‘__trt__SetVideoEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetAudioSourceConfiguration’中:
soapServer.c:(.text+0x37d88):对‘__trt__SetAudioSourceConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetAudioEncoderConfiguration’中:
soapServer.c:(.text+0x38023):对‘__trt__SetAudioEncoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetVideoAnalyticsConfiguration’中:
soapServer.c:(.text+0x382be):对‘__trt__SetVideoAnalyticsConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetMetadataConfiguration’中:
soapServer.c:(.text+0x38559):对‘__trt__SetMetadataConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetAudioOutputConfiguration’中:
soapServer.c:(.text+0x387f4):对‘__trt__SetAudioOutputConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetAudioDecoderConfiguration’中:
soapServer.c:(.text+0x38a8f):对‘__trt__SetAudioDecoderConfiguration’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoSourceConfigurationOptions’中:
soapServer.c:(.text+0x38d2a):对‘__trt__GetVideoSourceConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoEncoderConfigurationOptions’中:
soapServer.c:(.text+0x38fc5):对‘__trt__GetVideoEncoderConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioSourceConfigurationOptions’中:
soapServer.c:(.text+0x39260):对‘__trt__GetAudioSourceConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioEncoderConfigurationOptions’中:
soapServer.c:(.text+0x394fb):对‘__trt__GetAudioEncoderConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetMetadataConfigurationOptions’中:
soapServer.c:(.text+0x39796):对‘__trt__GetMetadataConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioOutputConfigurationOptions’中:
soapServer.c:(.text+0x39a31):对‘__trt__GetAudioOutputConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetAudioDecoderConfigurationOptions’中:
soapServer.c:(.text+0x39ccc):对‘__trt__GetAudioDecoderConfigurationOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetGuaranteedNumberOfVideoEncoderInstances’中:
soapServer.c:(.text+0x39f67):对‘__trt__GetGuaranteedNumberOfVideoEncoderInstances’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetStreamUri’中:
soapServer.c:(.text+0x3a202):对‘__trt__GetStreamUri’未定义的引用
soapServer.o:在函数‘soap_serve___trt__StartMulticastStreaming’中:
soapServer.c:(.text+0x3a49d):对‘__trt__StartMulticastStreaming’未定义的引用
soapServer.o:在函数‘soap_serve___trt__StopMulticastStreaming’中:
soapServer.c:(.text+0x3a738):对‘__trt__StopMulticastStreaming’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetSynchronizationPoint’中:
soapServer.c:(.text+0x3a9d3):对‘__trt__SetSynchronizationPoint’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetSnapshotUri’中:
soapServer.c:(.text+0x3ac6e):对‘__trt__GetSnapshotUri’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetVideoSourceModes’中:
soapServer.c:(.text+0x3af09):对‘__trt__GetVideoSourceModes’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetVideoSourceMode’中:
soapServer.c:(.text+0x3b1a4):对‘__trt__SetVideoSourceMode’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetOSDs’中:
soapServer.c:(.text+0x3b43f):对‘__trt__GetOSDs’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetOSD’中:
soapServer.c:(.text+0x3b6da):对‘__trt__GetOSD’未定义的引用
soapServer.o:在函数‘soap_serve___trt__GetOSDOptions’中:
soapServer.c:(.text+0x3b975):对‘__trt__GetOSDOptions’未定义的引用
soapServer.o:在函数‘soap_serve___trt__SetOSD’中:
soapServer.c:(.text+0x3bc10):对‘__trt__SetOSD’未定义的引用
soapServer.o:在函数‘soap_serve___trt__CreateOSD’中:
soapServer.c:(.text+0x3beab):对‘__trt__CreateOSD’未定义的引用
soapServer.o:在函数‘soap_serve___trt__DeleteOSD’中:
soapServer.c:(.text+0x3c146):对‘__trt__DeleteOSD’未定义的引用
soapServer.o:在函数‘soap_serve___trv__GetServiceCapabilities’中:
soapServer.c:(.text+0x3c3e1):对‘__trv__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___trv__GetReceivers’中:
soapServer.c:(.text+0x3c67c):对‘__trv__GetReceivers’未定义的引用
soapServer.o:在函数‘soap_serve___trv__GetReceiver’中:
soapServer.c:(.text+0x3c917):对‘__trv__GetReceiver’未定义的引用
soapServer.o:在函数‘soap_serve___trv__CreateReceiver’中:
soapServer.c:(.text+0x3cbb2):对‘__trv__CreateReceiver’未定义的引用
soapServer.o:在函数‘soap_serve___trv__DeleteReceiver’中:
soapServer.c:(.text+0x3ce4d):对‘__trv__DeleteReceiver’未定义的引用
soapServer.o:在函数‘soap_serve___trv__ConfigureReceiver’中:
soapServer.c:(.text+0x3d0e8):对‘__trv__ConfigureReceiver’未定义的引用
soapServer.o:在函数‘soap_serve___trv__SetReceiverMode’中:
soapServer.c:(.text+0x3d383):对‘__trv__SetReceiverMode’未定义的引用
soapServer.o:在函数‘soap_serve___trv__GetReceiverState’中:
soapServer.c:(.text+0x3d61e):对‘__trv__GetReceiverState’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetServiceCapabilities’中:
soapServer.c:(.text+0x3d8b9):对‘__tse__GetServiceCapabilities’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetRecordingSummary’中:
soapServer.c:(.text+0x3db54):对‘__tse__GetRecordingSummary’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetRecordingInformation’中:
soapServer.c:(.text+0x3ddef):对‘__tse__GetRecordingInformation’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetMediaAttributes’中:
soapServer.c:(.text+0x3e08a):对‘__tse__GetMediaAttributes’未定义的引用
soapServer.o:在函数‘soap_serve___tse__FindRecordings’中:
soapServer.c:(.text+0x3e325):对‘__tse__FindRecordings’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetRecordingSearchResults’中:
soapServer.c:(.text+0x3e5c0):对‘__tse__GetRecordingSearchResults’未定义的引用
soapServer.o:在函数‘soap_serve___tse__FindEvents’中:
soapServer.c:(.text+0x3e85b):对‘__tse__FindEvents’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetEventSearchResults’中:
soapServer.c:(.text+0x3eaf6):对‘__tse__GetEventSearchResults’未定义的引用
soapServer.o:在函数‘soap_serve___tse__FindPTZPosition’中:
soapServer.c:(.text+0x3ed91):对‘__tse__FindPTZPosition’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetPTZPositionSearchResults’中:
soapServer.c:(.text+0x3f02c):对‘__tse__GetPTZPositionSearchResults’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetSearchState’中:
soapServer.c:(.text+0x3f2c7):对‘__tse__GetSearchState’未定义的引用
soapServer.o:在函数‘soap_serve___tse__EndSearch’中:
soapServer.c:(.text+0x3f562):对‘__tse__EndSearch’未定义的引用
soapServer.o:在函数‘soap_serve___tse__FindMetadata’中:
soapServer.c:(.text+0x3f7fd):对‘__tse__FindMetadata’未定义的引用
soapServer.o:在函数‘soap_serve___tse__GetMetadataSearchResults’中:
soapServer.c:(.text+0x3fa98):对‘__tse__GetMetadataSearchResults’未定义的引用

8.拷贝代码(一定不要乱拷贝,有些C文件有用,但是头文件没用,切记看清楚再拷贝),

从gsoap-2.8拷贝下面的代码,到onvif目录下:

gsoap/dom.c
gsoap/stdsoap2.c
gsoap/stdsoap2.h
gsoap/custom/duration.c
gsoap/plugin/mecevp.c
gsoap/plugin/mecevp.h
gsoap/plugin/smdevp.c
gsoap/plugin/smdevp.h
gsoap/plugin/threads.c
gsoap/plugin/threads.h
gsoap/plugin/wsaapi.c
gsoap/plugin/wsaapi.h
gsoap/plugin/wsseapi.c
gsoap/plugin/wsseapi.h
结果:

10.写一个测试demo

这里主要贴一下Makefile(因为测试使用,所以Makefile,简单的改了一下,以实现为目的)

自己写个测试文件,编译的时候记得加上参数:-DWITH_OPENSSL -DWITH_DOM –DDEBUG

编译:

mrlee@mrlee-virtual-machine:~/Gsoap/gsoap-2.8/onvif$ make
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o onvif_dump.o onvif_dump.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o soapC.o soapC.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o stdsoap2.o stdsoap2.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o main.o main.c
main.c: In function ‘open_rtsp’:
main.c:640:5: warning: ‘av_register_all’ is deprecated [-Wdeprecated-declarations]av_register_all();                                                          // Register all codecs and formats so that they can be us^
In file included from /usr/local/include/libavdevice/avdevice.h:51:0,from main.c:15:
/usr/local/include/libavformat/avformat.h:1955:6: note: declared herevoid av_register_all(void);^
main.c:661:9: warning: ‘codec’ is deprecated [-Wdeprecated-declarations]switch(st->codec->codec_type) {^
In file included from /usr/local/include/libavdevice/avdevice.h:51:0,from main.c:15:
/usr/local/include/libavformat/avformat.h:888:21: note: declared hereAVCodecContext *codec;^
main.c:672:5: warning: ‘av_init_packet’ is deprecated [-Wdeprecated-declarations]av_init_packet(&pkt);                                                       // initialize packet.^
In file included from /usr/local/include/libavcodec/bsf.h:30:0,from /usr/local/include/libavcodec/avcodec.h:44,from main.c:14:
/usr/local/include/libavcodec/packet.h:488:6: note: declared herevoid av_init_packet(AVPacket *pkt);^
main.c: In function ‘cb_discovery’:
main.c:780:54: warning: passing argument 2 of ‘ONVIF_GetProfiles’ from incompatible pointer type [-Wincompatible-pointer-types]int profile_cnt = ONVIF_GetProfiles(Media_XAddr, profilesToken);                // 获取媒体配置信息(主/辅码流配置信�^
In file included from main.c:12:0:
onvif_comm.h:104:17: note: expected ‘struct tagProfile **’ but argument is of type ‘char *’int             ONVIF_GetProfiles(const char *MediaXAddr, struct tagProfile **profiles);^
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o smdevp.o smdevp.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o dom.o dom.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o mecevp.o mecevp.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o wsseapi.o wsseapi.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o threads.o threads.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o duration.o duration.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o wsaapi.o wsaapi.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o soapClient.o soapClient.c
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include   -c -o onvif_comm.o onvif_comm.c
#gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include -o client_onvif onvif_dump.o soapC.o stdsoap2.o main.o smdevp.o dom.o mecevp.o wsseapi.o threads.o duration.o wsaapi.o soapClient.o onvif_comm.o  -lpthread -lssl -lcrypto -luuid
#strip client_onvif
gcc  -DWITH_OPENSSL -DWITH_NONAMESPACES -DWITH_DOM -I./ -I./plugin -I./ -I/usr/local/ssl/include -o client_onvif onvif_dump.o soapC.o stdsoap2.o main.o smdevp.o dom.o mecevp.o wsseapi.o threads.o duration.o wsaapi.o soapClient.o onvif_comm.o  -lpthread -L/usr/local/ssl/lib -lssl -lcrypto -luuid -lavcodec -lavdevice -lavfilter \-lavformat -lavutil -lswscale -lavresample
strip client_onvif

下一遍贴:onvif的实例代码,已测通。

Linux gsoap生成onvif框架(C语言客户端代码)一相关推荐

  1. ONVIF协议网络摄像机(IPC)客户端程序开发使用gSOAP生成ONVIF框架代码(C++)03-->Windows

    其它的不多说,直接开始步骤. 我的版本是2.8.109,目前最新版本. 实际上,onvif的源码是兼容Linux.Windows版本的,例如如果你已经在这篇文章ONVIF协议网络摄像机(IPC)客户端 ...

  2. onvif学习笔记4:Windows环境使用gsoap生成onvif框架代码

    因工作原因,被安排接手onvif,为了对其有个真正.切实.系统.认真.严谨的了解,就利用周末等业余时间来学习研究. 本文主要讲述在windows环境中使用gsoap生成onvif框架的代码,但不涉及框 ...

  3. gSOAP生成ONVIF框架代码

    gSOAP生成ONVIF框架代码 一次性把所有可能会用到的WSDL文档都纳入编译,以便得到一份尽可能齐全的ONVIF接口代码.我这样做是为了省事,但我希望你在心底里能明白一件事情:ONVIF有好多个模 ...

  4. 一、ONVIF协议:使用gSOAP生成ONVIF框架代码

    1 前言   特别感谢@许振坪大佬的文章,使得我能在很短的时间内,通过ONVIF协议获得设备信息.   因为时间的原因,我项目完结之后,再补充相关基础知识,本文章主要记录框架代码生成步骤和遇见的问题. ...

  5. gSoap编译生成onvif框架代码

    注意:以上操作命令是在gsoap-2.8/gsoap 路径下执行的 编译修改 typemap.dat 1. 去掉 xsd__duration = #import "custom/durati ...

  6. 根据WADL生成REST风格WebService的客户端代码

    SOAP风格的WebService可以根据WSDL,用apache-cxf自带的wsdl2java工具生成客户端代码. 而REST风格WebService也有类似WSDL的WADL,通过发布路径后面加 ...

  7. linux socket通信编程之c语言(客户端和服务器程序)

    最近在学习socket编程,在网上找到一个很好的实例,于是按自己的想把代码修改了一下,算半原创了~~~~ 要保存起来常复习呀~~~ /// //服务器端代码:server.c /// //本文件是服务 ...

  8. .NET Core 3.0 使用Nswag生成Api文档和客户端代码

    摘要 在前后端分离.Restful API盛行的年代,完美的接口文档,成了交流的纽带.在项目中引入Swagger (也称为OpenAPI),是种不错的选择,它可以让接口数据可视化.下文将会演示 利用N ...

  9. Linux时间校准(ntpdate及NTP客户端代码校准示例)

    背景 机器每次机启后时间就会出现异常,因为机器无法访问外网,只能访问局域网的ntp服务,所以需要保证局域网内部有ntp服务,如何安装ntp服务,参考Ubuntu20.04 Ntp服务安装及验证. 网络 ...

最新文章

  1. 论天空、太空、航空、航天
  2. Android各种各样的Drawable-更新中
  3. Hyperledger Fabric 智能合约实战 (0) 整体步骤
  4. Spring4学习笔记
  5. 解决 vue 项目一直出现 sockjs-node/info?t=1554978**** ,并造成浏览器不能及时更新编码改动结果
  6. 推荐:iReaper - MSDN中文Webcast下载程序
  7. 数据结构----快速排序
  8. win32调用系统颜色对话框
  9. 免登陆Oracle下载jdk
  10. 客户信息管理系统(java)
  11. java定时器定时发短信_quartz-job实现实时或定时发送短信任务(示例代码)
  12. c# autoscroll_禁用Firefox中令人讨厌的AutoScroll功能
  13. php中控制段落的行距,CSS段落间距调整 P标签段落距离如何设置
  14. 云之讯融合通讯开放平台_提供融合语音,短信,VoIP,视频和IM等通讯API及SDK。...
  15. css实现html透明效果
  16. 手机通讯录 Python
  17. IntelliJ Idea 常用快捷键列表
  18. Winform UI界面设计例程——自定义PictureBox
  19. F2FS源码分析系列文章目录
  20. Matlab中ylim函数的使用

热门文章

  1. 处理器最新排行_最新 iOS 性能排行榜,你的设备落伍了吗?
  2. python菱形图案_「每日一练」巧用python输出菱形图案
  3. 算法的五大要素 学计算机必备
  4. 【毕业设计】 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化
  5. C语言学习知识总结————第一节课
  6. 【python】计算机视觉~舌象图片中舌体倾斜判别(四)
  7. 2021电赛国一——K题照度稳定可调LED台灯
  8. 航海新说|掌舵绝招 -- 弹性 · 敏捷 · 开放
  9. 电子类通信类和计算机类ei期刊,电子类通信类和计算机类EI期刊(大部分免费)
  10. SYN包含的常用TCP选项