0

我基本上是一名 java 开发人员,我有一个使用 java 创建的 web 服务。现在我需要一个用 C 编码的客户端来使用那个 java WS。在浏览了很多之后,我了解了它对 WS 的支持的 gSOAP cos。

现在,我能够生成头文件以及相应的存根类。我还创建了一个将调用实际代理方法的主类。但由于某些原因,我的代码根本没有被编译。

我在做什么的步骤:

  1. wsdl2h.exe -c -o calc.h calc.wsdl
  2. soapcpp2.exe -C calc.h
  3. gcc.exe -o CalcClient CalcClient.c soapC.c soapClient.c stdsoap2.c

前两个步骤很好,但它只有 3 步给未定义的引用错误带来麻烦。请注意,我在 windows 平台上运行上述程序,并且 gcc 编译器由 Bloodshed 开发工具提供。

执行步骤 3 时出现的错误是(复制了几行..),
CalcClient.C:5: undefined reference to soap_call_ns2__add' CalcClient.C:10: undefined reference to soap_end' 和 C:\TEMP/ccS0iaaa.o (.text+0x129):stdsoap2.c: 未定义对send@16' 的引用 C:\TEMP/ccS0iaaa.o(.text+0x224):stdsoap2.c: 未定义对send@16' C:\TEMP/ccS0iaaa的引用.o(.text+0x28b):stdsoap2.c: 未定义对 inet_addr @4的引用soap_new_LIBRARY_VERSION_REQUIRED_20816'
CalcClient.C:7: undefined reference to

soap_print_fault'
CalcClient.C:11: undefined reference to

sendto@24'
C:\TEMP/ccS0iaaa.o(.text+0x154):stdsoap2.c: undefined reference to

sendto@24'
C:\TEMP/ccS0iaaa.o(.text+0x24f):stdsoap2.c: undefined reference to

WSAGetLastError@0'
C:\TEMP/ccS0iaaa.o(.text+0x4a9b):stdsoap2.c: undefined reference to

我知道肯定做错了什么(因为我是 C 新手)。我尝试了所有我能想到的选项,你能帮我吗?

4

1 回答 1

0

我有类似的问题。这主要是因为我没有包括 stdsoap2.cpp 或 stdsoap2.c。我将 stdsoap2.cpp 文件从 gsoap 文件夹复制到项目文件夹中,然后我运行该程序,它运行良好。

于 2013-11-11T17:24:08.793 回答