现在,我正在编写一个程序来调用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
最佳答案
GCC/ld/GNU工具链的最新版本要求以特定顺序指定对象和库文件,以便链接器可以按照相互依赖的顺序来找到符号。这意味着库应该转到命令行的末尾。您的第二行(链接时)应为
gcc -o testMain -L/usr/lib soapC.o soapClient.o stdsoap2.o testMain.o -lgsoap -lgsoapck -lgsoapssl
代替。