gSOAP - 使用gcc.exe在Windows中出现未定义的引用错误

时间:2013-10-09 16:03:34

标签: c gsoap

我基本上是一名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
  4. 前两个步骤没问题,但只有3个步骤可以解决未定义的引用错误。请注意,我在windows平台上运行上述内容,gcc编译器由Bloodshed Dev工具提供。

    执行步骤3时得到的错误是(复制几行..),
    CalcClient.C:5:对soap_new_LIBRARY_VERSION_REQUIRED_20816'
    CalcClient.C:7: undefined reference to
    soap_call_ns2__add'的未定义引用 CalcClient.C:10:对soap_print_fault'
    CalcClient.C:11: undefined reference to
    soap_end'的未定义引用 和 C:\ TEMP / ccS0iaaa.o(。text + 0x129):stdsoap2.c:对sendto@24'
    C:\TEMP/ccS0iaaa.o(.text+0x154):stdsoap2.c: undefined reference to
    的未定义引用发送@ 16'
    C:\ TEMP / ccS0iaaa.o(。text + 0x224):stdsoap2.c:对sendto@24'
    C:\TEMP/ccS0iaaa.o(.text+0x24f):stdsoap2.c: undefined reference to
    的未定义引用发送@ 16'
    C:\ TEMP / ccS0iaaa.o(。text + 0x28b):stdsoap2.c:对WSAGetLastError@0'
    C:\TEMP/ccS0iaaa.o(.text+0x4a9b):stdsoap2.c: undefined reference to
    的未定义引用inet_addr @ 4

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

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。这主要是因为我没有包括stdsoap2.cpp或stdsoap2.c。我将stdsoap2.cpp文件从gsoap文件夹中删除到项目文件夹中,然后运行程序,它运行正常。