现在,我正在编写一个程序来调用Web服务。我写了testMain.c。其他的则由wsdl2hsoapcpp2生成。

我的编译命令是这样的:

 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

最佳答案

GCC/ld/GNU工具链的最新版本要求以特定顺序指定对象和库文件,以便链接器可以按照相互依赖的顺序来找到符号。这意味着库应该转到命令行的末尾。您的第二行(链接时)应为

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

代替。

10-07 16:59