0

GSOAP 呼び出しを行うために、C コードでポリモーフィズムを使用する wsdl を使用する必要があります。GSOAP のドキュメント (8.2 Customizing Data Bindings With The typemap.dat File) に従って、typemap.dat を変更する必要があります。これは、基本型をラッパー型として再宣言することです。使用法を変更したいだけなので、ドキュメントで提案されているように宣言セクションで省略記号 (...) を使用しましたが、wsdl2h は省略記号を理解していないようで、出力ヘッダー ファイルにそのまま配置します。コードのビルド中に構文エラーが発生しています。

ポリモーフィック バインディング用に typemap.dat に追加:

[ 
struct __ns__PolymorphicStruct
{ 
   int __type;
   void *__item;
   struct ns__PolymorphicStruct *__self; 
};
]
ns__PolymorphicStruct = ... | struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct

ここで何か間違ったことをしている場合は、誰か助けてください。

4

1 に答える 1

0

省略記号は、wsdl2 で生成された ns__PolymorphicStruct の定義を表すためのものであるため、この場合は 2 つの宣言になります。

使用する:

[ 
struct __ns__PolymorphicStruct
{ 
   int __type;
   void *__item;
   struct ns__PolymorphicStruct *__self; 
};
]
ns__PolymorphicStruct = | struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct

または以下を使用します (ただし、ns__PolymorphicStruct のオーバーライド宣言の配置は変更されます):

ns__PolymorphicStruct = \ 
struct __ns__PolymorphicStruct\
{\
   int __type;\
   void *__item;\
   struct ns__PolymorphicStruct *__self;\
};\
| struct __ns__PolymorphicStruct | struct __ns__PolymorphicStruct

\ は、宣言を次の行に継続できるようにするために使用されます。

于 2013-10-30T15:56:50.903 に答える