0

現在、Web サービスを呼び出すプログラムを作成しています。testMain.c を書きます。その他は と によって生成されwsdl2hますsoapcpp2

私のコンパイルコマンドは次のようなものです:

 gcc -Wall -g -c -L. soapC.c soapClient.c stdsoap2.c testMain.c
 gcc -o testMain -L/usr/lib -lgsoap -lgsoapck -lgsoapssl soapC.o soapClient.o stdsoap2.o testMain.o 

そして、これらのエラーが発生します。私を助けてください。

stdsoap2.o: In function `soap_print_fault':
/test/stdsoap2.c:16279: undefined reference to `soap_check_faultsubcode'
/test/stdsoap2.c:16281: undefined reference to `soap_check_faultdetail'
stdsoap2.o: In function `soap_sprint_fault':
/test/stdsoap2.c:16341: undefined reference to `soap_check_faultdetail'
collect2: ld returned 1 exit status
4

4 に答える 4

1

GCC/ld/GNU ツールチェーンの最近のバージョンでは、オブジェクト ファイルとライブラリ ファイルを特定の順序で指定する必要があります。これにより、相互に依存するのと同じ順序でシンボルをリンカが見つけることができます。これは、ライブラリがコマンド ラインの最後に移動する必要があることを意味します。2行目(リンクしているとき)は

gcc -o testMain -L/usr/lib soapC.o soapClient.o stdsoap2.o testMain.o -lgsoap -lgsoapck -lgsoapssl

代わりは。

于 2012-12-31T07:14:53.870 に答える
0

私はウェブを検索し、私の問題と非常によく似た投稿を見つけました。私はこのソリューションを使用して、問題を解決しました。http://www.mail-archive.com/gsoap@yahoogroups.com/msg01022.html

于 2013-01-01T01:29:07.150 に答える
0

stdsoap2.oプロジェクトは既に含まれているため、プロジェクトにリンクする必要はありませんlibgsoap(gcc リンカー オプションを介して指定されます。プロジェクト-lgsoap)から除外してみてください。gSOAP FAQから:stdsoap2.c

gcc/g++ (GNU GCC) でリンク エラーが発生します。私は何をすべきか?C アプリの場合: soapcpp2 オプション -c を使用して C コードを生成するか、パッケージの .c ファイルのみを使用するか、libgsoap.a (-lgsoap) とリンクするか、lib のソース stdsoap2.c (および該当する場合は dom.c) を使用します。

于 2013-01-04T20:54:33.047 に答える