동일한 응용 프로그램에서 2 개의 별도 wsdl 파일을 사용하여 Linux에서 gSOAP를 사용하는 C++ 웹 서비스 클라이언트를 작성했습니다. 나는 일이 하나 개의 WSDL 파일로 작업하고, 문서를 읽고 얻을 관리 한 두 파일에 wsdl2h를 사용하는 과정을 통해 갔다 :2 개의 다른 wsdl 파일로 gSOAP를 사용할 때 링커 오류가 발생했습니다.
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 파일이 있음을 확인했습니다. 이것은 내가 기대했던 것만은 아니지만 관계없이 두 주 헤더를 주 함수에 포함시키고 각 Proxy 클래스의 인스턴스를 만들고 하나의 wsdl 파일로 수행했던 것과 똑같은 방식으로 사용했습니다. 나는 그 오류
/tmp/ccHNDAM4.o:(.data+0x0): multiple definition of `namespaces'
/tmp/ccLJIHwV.o:(.data+0x0): first defined here
collect2: ld returned 1 exit status
을 반환
g++ -DWITH_OPENSSL main.cpp soapC.cpp soapService1Proxy.cpp soapService2Proxy.cpp -lgsoapssl++ -lssl
컴파일 나는 'namepaces이'(이 경우 각 WSDL에 대해 동일)에 .nsmap 파일에 배열을 참조 것을 알고있다. 컴파일러가 다중 정의를 포함하면이 중 하나만 포함했습니다. 가능한 한 충실하게 가이드 라인과 gSOAP 문서를 따르려고했지만이 문제를 해결할 수 없기 때문에 내가 잘못하고있는 것을 누군가가 말할 수 있다면 정말 고맙겠습니다.