锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2023-06-05 01:07:01 gsop光电传感器

创作人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

指令:cdopenssl-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和soapcpp两个工具(执行文件)。在gsoap\bin目录下,win32和macosx平台已经有现成的了(官方帮我们编译好了的),linux下一个应该自己编译,可以参考INSTALL.txt编译安装文件(不同)gSOAP版本的编译安装方法会有所不同,因为你gSOAP版本中的INSTALL.txt为准)。

实验证实,wsdl2h和soapcpp两个工具,不管是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... ys
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 functions

Compilation 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 namespace


soap12.h(55): *WARNING*: option -1 or -2 overrides SOAP-ENC namespace

Using 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 functions

Compilation 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 here
 void 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 here
     AVCodecContext *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 here
 void 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的实例代码,已测通。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章