2

gSoap 機能を使用しています。

2 つの wsdl ファイルを使用する C++ コード (ダイム アクセス用) をコンパイルしようとしています。最初は、両方の関数が 1 つの .wsdl ファイルにありました。ただし、プロセス集約型のサービスを 1 台のマシンで実行し、他の機能を古いホストで実行できるように、それらは分離されています。

1 つの .wsdl ファイルを使用する場合、すべて問題なく機能します (以下の COMPILE を参照)。コメントアウトされた部分で、すべてOKです。行を追加すると (つまり、もう 1 つの .wsdl ファイルを追加すると)、エラーが発生します。

クライアントで 2 つ以上の .wsdl ファイルを使用すると、エラーが発生します (以下のエラーを参照)。ドキュメントに従って -n および -p オプションを使用してコンパイルすると、以下のエラーが発生します。

私が行った場合:

connect_to_soap_servers/src> grep soap_default_int *.cpp
dukdimeC.cpp:SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a)
dukdimedcrC.cpp:SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a)

次に、(たとえば) soap_default_int が、dukdimeC.cpp ~および~ dukdimeC.cpp の両方に対して定義されていることを示します。

これらは、gSOAP パッケージの一部である soapcpp2 コマンドを使用して生成されました。ヘッダー ファイルが既に提供されているため、最初は wsdl ファイルを使用していません。

役立つ情報があれば大歓迎です。

ティア、ケーシー


エラー

/tmp/cci3r2M7.o: In function `soap_default_byte(soap*, char*)':
/usr/include/c++/4.2.1/new:105: multiple definition of `soap_default_byte(soap*, char*)'
/tmp/cc8gONZ4.o:/S190GB/USERS/imgdev//BUSPROJ/code_development/dime/executables/test/connect_to_soap_servers/src/dukdimedcrC.cpp:617: first defined here
/tmp/cci3r2M7.o: In function `soap_default_int(soap*, int*)':
/S190GB/USERS/imgdev//BUSPROJ/code_development/dime/executables/test/connect_to_soap_servers/src/dukdimeC.cpp:1528: multiple definition of `soap_default_int(soap*, int*)'
/tmp/cc8gONZ4.o:/S190GB/USERS/imgdev//BUSPROJ/code_development/dime/executables/test/connect_to_soap_servers/src/dukdimedcrC.cpp:654: first defined here
/tmp/cci3r2M7.o: In function `soap_default_long(soap*, long*)':
/S190GB/USERS/imgdev//BUSPROJ/code_development/dime/executables/test/connect_to_soap_servers/src/dukdimeC.cpp:1592: multiple definition of `soap_default_long(soap*, long*)'

Dime_Source (上部)

//gsoap ns service name: condime
//gsoap ns service style: document
//gsoap ns service encoding: literal
//gsoap ns service namespace: urn:dimeServer
//gsoap ns service port: http://localhost:7085
//gsoap ns schema  namespace: urn:condime

typedef char                    *xsd__string;
typedef char                    *xsd__anyURI;
typedef float                   xsd__float;
typedef long                    xsd__int;
typedef double                  xsd__double;
typedef unsigned                long long xsd__positiveInteger;

class ns__Data
{ unsigned char *__ptr; /* points to data */
  int __size;           /* size of data */
  char *id;             /* dime attachment ID (set to NULL to obtain unique cid) */
  char *type;           /* dime attachment content type */
  char *options;        /* dime attachment options (optional) */
  ns__Data();
  struct soap *soap;    /* soap context that created this instance */
};

Dime_Source_Decrumple

//gsoap ns1 service name: condimedcr
//gsoap ns1 service style: document
//gsoap ns1 service encoding: literal
//gsoap ns1 service namespace: urn:dimedcrServer
//gsoap ns1 service port: http://localhost:7086
//gsoap ns1 schema  namespace: urn:condimedcr


typedef char                    *xsd__string;
typedef char                    *xsd__anyURI;
typedef float                   xsd__float;
typedef long                    xsd__int;
typedef double                  xsd__double;
typedef unsigned                long long xsd__positiveInteger;

MAKEFILE 部分

CLNT_DECR_SRCS = dukdimedcrcondimedcrProxy.cpp dukdimedcrC.cpp dukdimedcrClient.cpp
#CLNT_DIME_SRCS = dukdimecondimeProxy.cpp dukdimeC.cpp dukdimeClient.cpp

all: client

client: Dime_Source_Decrumple DimeFunc_dll.cpp $(SOAPH) $(SOAPCPP)
        $(GSOAP) -x -n -pdukdimedcr Dime_Source_Decrumple
        $(GSOAP) -x -i -pdukdimedcr Dime_Source_Decrumple
#       $(GSOAP) -x -n -pdukdime Dime_Source
#       $(GSOAP) -x -i -pdukdime Dime_Source
        $(CPP) $(CFLAGS) $(INCLUDES) DimeFunc_dll.cpp -o $(CLNT_OUT)  $(CLNT_DECR_SRCS)       $(CLNT_DIME_SRCS) $(SOAPCPP) $(LIBS)`
4

0 に答える 0