[英]Linker error when using gSOAP with 2 different wsdl files
我正在使用同一应用程序中的2个单独的wsdl文件在linux上使用gSOAP编写C ++ Web服务客户端。 我设法只使用一个wsdl文件,并在阅读文档后,完成了对两个文件使用wsdl2h的过程:
wsdl2h -o header.h wsdlfile1.wsdl wsdlfile2.wsdl
这很好,所以我做了
soapcpp2 -i -I/usr/share/gsoap/import/ header.h
然后我按照指示在typemap.dat中完成了所有常用的命名空间修改。 我现在发现我有两个类型为soapService1Proxy.cpp / h和soapService2Proxy.cpp / h的.cpp和.h文件。 这不是我所期望的,但无论如何,我在我的main函数中包含了两个头文件并创建了每个Proxy类的实例,并且使用的方式与我只使用一个wsdl文件完全相同。 然后我编译
g++ -DWITH_OPENSSL main.cpp soapC.cpp soapService1Proxy.cpp soapService2Proxy.cpp -lgsoapssl++ -lssl
它返回错误
/tmp/ccHNDAM4.o:(.data+0x0): multiple definition of `namespaces'
/tmp/ccLJIHwV.o:(.data+0x0): first defined here
collect2: ld returned 1 exit status
我知道'namepaces'是指.nsmap文件中的数组(在这种情况下,每个wsdl都是相同的)。 我只包含其中一个,因为如果我包含两者,编译器会抱怨多个定义。 我真的很感激,如果有人能告诉我我在这里做错了什么,因为我尽可能忠实地遵循指南和gSOAP文档,但根本无法解决这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.