未定义引用时编译gSOAP的客户端(Undefined references when compil

2019-09-17 12:40发布

我试图创建一个客户端为C.我生成与wsdl2h和soapcpp2 C文件的Web服务。 在NetBeans中,我添加了生成的文件和gSOAP的include目录到项目的include目录。 我的主要文件是这样的:

#include <stdio.h> 
#include <stdlib.h>
#include <soapH.h>
#include <webserviceSoap12.nsmap>

int main(int argc, char** argv) {

    struct soap *soap1 = soap_new();
    struct _ns1__getAllCustomer *quote;
    struct _ns1__getAllCustomerResponse *quote2;
    if (soap_call___ns2__getAllCustomer(soap1, NULL, NULL, quote, quote2) == SOAP_OK)
        printf("asd\n");
    else // an error occurred  
        soap_print_fault(soap1, stderr); // display the SOAP fault on the stderr stream
    return (EXIT_SUCCESS);
}

我复制了最本从gSOAP的网站的入门部分。 当我尝试编译我收到以下错误:

build/Debug/MinGW-Windows/main.o: In function `main':
\NetBeansProjects\WebServiceClient/main.c:19: undefined reference to `soap_new_LIBRARY_VERSION_REQUIRED_20808'
\NetBeansProjects\WebServiceClient/main.c:22: undefined reference to `soap_call___ns2__getAllCustomer'
\NetBeansProjects\WebServiceClient/main.c:25: undefined reference to `soap_print_fault'

如果我的“soapC.c”“soapClient.c”“soapClientLib.c”将文件添加到项目中,我得到了一堆更undefinied参考。 我究竟做错了什么? 我使用NetBeans IDE与Win7的MinGW的编译器。 我需要什么其他的库或者我应该包括哪些其他文件?

Answer 1:

我设法通过添加文件“soapC.c”“soapClient.c”“stdsoap.c”的项目文件,并在项目propertie来解决问题 - 包括目录添加由soapcpp2生成的文件和gSOAP的工具包的gSOAP的目录



Answer 2:

你需要在适当的库链接。 您将需要添加使用适当的库-l开关,你将有选择地需要传递的路径,这些库驻留通过-L 。 此外,注意,有结束的库++通常,如果你在使用C,你应该使用那些++。 所以,你的命令行shoulde至少包括:

对于C:

gcc ... -lgsoap -L/path/to/gsoap/binaries 

对于C ++:

g++ ... -lgsoap++ -L/path/to/gsoap/binaries 

此外,根据您是否使用附加功能,如SSL,饼干等,您将需要这些库中也链接:

g++ ... -lgsoap++ -lgsoapssl++ -L/path/...

如果您使用的是不同的工具链,查找的确切交换机的文档。



文章来源: Undefined references when compiling gSOAP client
标签: c gsoap