1

Java Web サービスを作成し、gSOAP C クライアントからこの Web サービスにアクセスしようとしています。

wsdl2h -c CalculatorService.wsdl
soapcpp2 -c -C CalculatorService.h

これでファイルをコンパイルしようとすると:

g++ -o ClientWS.exe ClientWS.c soapC.c soapClient.c C:\gsoap-2.8.9\gsoap\stdsoap2.c -IC:\gsoap-2.8.9\gsoap -IC:\gsoap-2.8.9\gsoap\import -LC:\GNUstep\lib\libws2_32.a

undefined reference以下に示すように、多くのエラーが発生します。

C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0x188): undefined reference to sendto@24' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0x1b2): undefined reference tosend@16' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0x280): undefined reference to sendto@24' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0x2aa): undefined reference tosend@16' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0x302): undefined reference to send@16' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0x319): undefined reference toWSAGetLastError@0' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0xad2): undefined reference to recvfrom@24' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0xaf6): undefined reference tontohl@4' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0xb29): undefined reference to recv@16' C:\DOCUME~1\MPERIY~1\LOCALS~1\Temp\ccvFm9ql.o:stdsoap2.c:(.text+0xb3e): undefined reference toWSAGetLastError@0'
more errors like this...
collect2: ld returned 1 exit status

不足しているファイルをリンクする方法の解決策を提供できますか? リンクとインクルード パスがどのように機能するか、C でライブラリを検索する場所がわかりません。

WindowsにGNUstepとgSOAPがあります。

4

1 に答える 1

0

-LC:\GNUstep\lib\ -lws2_32 を試してください

g++ -o ClientWS.exe ClientWS.c soapC.c soapClient.c C:\gsoap-2.8.9\gsoap\stdsoap2.c -IC:\gsoap-2.8.9\gsoap -IC:\gsoap-2.8.9\gsoap\import -LC:\GNUstep\lib\ -lws2_32

-Lは、ライブラリが配置されているディレクトリを示します

-lは、Link Editor が参照を検索するライブラリに名前付きライブラリを追加することを要求します。

-l を使用してライブラリを指定するときは、lib と接尾辞を削除します。

于 2012-06-21T10:59:49.157 に答える