1

gSoap ライブラリを使用して、WSHttpBinding で WCF サーバーと通信しようとしています。gSoap の WS-Addressing プラグインで問題が発生しているようです。#import "wsa5.h" を使用して WS-Addressing プラグインを有効にすると、コンパイルできなくなります。現在、soapC.cpp に未解決のシンボルがあります。最初のエラーは、soap_getelement(soap*, int*) にあります。エラーは SOAP_TYPE_ wsa5 _IsReferenceParameter です。これは、gSoap を使用した最初の試みです。アドバイスをいただければ幸いです。

gSoap バージョン 2.8.4

4

1 に答える 1

1

できることは、WSA 部分を Typemap ファイルに追加してから、wsdl2h コマンドで -t パラメーターを使用して指定することです。

すなわち:

wsdl2h -o target.h -t EditedTypemap.dat target.wsdl

gSOAP ディレクトリから標準の Typemap.dat をコピーして編集するだけで、次のようになります。

wsa = <http://schemas.xmlsoap.org/ws/2004/08/addressing>

SOAP_ENV__Header =\
#import "wsa.h"\n\
struct SOAP_ENV__Header\n\
{\n\
   mustUnderstand _wsa__MessageID    wsa__MessageID 0;\n\
   mustUnderstand _wsa__RelatesTo *  wsa__RelatesTo 0;\n\
   mustUnderstand _wsa__From *       wsa__From      0;\n\
   mustUnderstand _wsa__ReplyTo *    wsa__ReplyTo   0;\n\
   mustUnderstand _wsa__FaultTo *    wsa__FaultTo   0;\n\
   mustUnderstand _wsa__To           wsa__To        0;\n\
   mustUnderstand _wsa__Action       wsa__Action    0;\n\
};

次に、前述のように wsdl2h を再実行します。これがうまくいくことを願っています!gSOAP は優れたツールキットですが、使いこなすには少し手間がかかります。

于 2011-11-10T08:21:26.830 に答える