gsoap客户端编译/链接错误

时间:2012-12-31 04:56:45

标签: c compiler-errors gsoap

现在我正在编写一个程序来调用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

3 个答案:

答案 0 :(得分:1)

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

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

代替。

答案 1 :(得分:0)

我在网上搜索,发现了一个与我的问题非常相似的帖子。我使用这个解决方案并解决了这个问题。 http://www.mail-archive.com/gsoap@yahoogroups.com/msg01022.html

答案 2 :(得分:0)

您不需要将stdsoap2.o链接到您的项目,因为它已经包含在libgsoap中(通过gcc链接器选项-lgsoap)给出。尝试从您的项目中排除stdsoap2.c项目。来自gSOAP FAQ

  

我收到gcc / g ++(GNU GCC)的链接错误。我该怎么办?对于C.   apps:使用soapcpp2选项-c生成C代码,只使用   package的.c文件,链接libgsoap.a(-lgsoap)或使用 lib的   source stdsoap2.c(适用时为dom.c)。