2

Linux システムで、WCF 上に構築された SOAP サービスと対話する gSOAP-2.8.8 を使用してクライアント アプリを作成したいと考えています。そのため、次のことを行いました。

wsdl2h -t typemap.dat -o myService.h myService.wsdl    
soapcpp2 -Igsoap/import -CLix myService.h

また、wsseapi.h に記載されているように、wsseapi.h の「#include soapH.h」を soapcpp2 で生成された soapH.h に置き換えました。

次に、次の行を myService.h に手動で追加することが重要なステップです。

#import "wsse.h"

struct SOAP_ENV__Header"
{
    mustUnderstand  // must be understood by receiver
    _wsse__Security *wsse__Security;    ///< TODO: Check element type (imported type)
};

...そしてそれらのファイルを次のようにコンパイルします

g++ -DWITH_DOM -DWITH_OPENSSL -Igsoap -Igsoap/import -Igsoap/plugin -o test \
   myService.cpp soapC.cpp soapmyServiceProxy.cpp gsoap/stdsoap2.cpp gsoap/dom.cpp \
   gsoap/custom/duration.c gsoap/plugin/wsseapi.cpp gsoap/plugin/smdevp.c gsoap/plugin/mecevp.c \
   -L/usr/lib -lssl -lcrypt

すべてのソースのオブジェクト ファイルを取得します;-) しかし、リンク段階で 2 つのエラーが発生します。

soapC.cpp:203: undefined reference to `soap_in_ns4__duration(soap*, char const*, long long*, char const*)'
soapC.cpp:676: undefined reference to `soap_in_ns4__duration(soap*, char const*, long long*, char const*)'

編集: 回避策として、現在、 soap_in_ns4__duration()を、custom/duration.c に実装されているsoap_in_xsd__duration( )に置き換えています。

それにもかかわらず、誰かがここで何がうまくいかないのかヒントを教えてもらえますか?! 前もって感謝します

4

1 に答える 1

1

作成するメインファイルに「soapH.h」ファイルを含める必要があります。

于 2012-05-22T13:32:33.063 に答える