Я пытаюсь скомпилировать и запустить свой первый gsoap. Однако в моей основной() я получаю ошибку undefined reference to
. Я поиск по сети, множество решений являются для Windows, .. Я программирования в Linux (CentOS) и используя Qt ..gsoap undefined reference in linux qt
Мой .pro файл:
TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp \
stdsoap2.cpp \
soapC.cpp \
soapClient.cpp
HEADERS += \
stdsoap2.h \
soapStub.h \
soapH.h \
soapCountryInfoServiceSoapBindingProxy.h
Я не дать ссылку на libgsoap++.a
, потому что Я уже включил stdsoap2
в свой проект.
сообщение об ошибке:
/.1/Projects/calisma/soapCountries/main.cpp:47: error: undefined reference to `__ns1__ListOfLanguagesByCode(soap*, _i__ListOfLanguagesByCode*, _i__ListOfLanguagesByCodeResponse*)'
:-1: error: collect2: ld returned 1 exit status
Вот мой main.cpp, и я получаю сообщение об ошибке в строке __ns1__ListOfLanguagesByCode(soap, code, result);
main.cpp:
#include <iostream>
#include "CountryInfoServiceSoapBinding.nsmap"
#include "soapCountryInfoServiceSoapBindingProxy.h"
int main()
{
CountryInfoServiceSoapBinding *countryObj;
struct soap *soap = soap_new();
countryObj = (CountryInfoServiceSoapBinding *)malloc(sizeof(CountryInfoServiceSoapBinding));
if(countryObj == NULL)
{
std::cout << "Cannot allocate memory for countryobj";
exit(EXIT_FAILURE);
}
_i__ListOfLanguagesByCode *code;
code = (_i__ListOfLanguagesByCode *)malloc(sizeof(_i__ListOfLanguagesByCode));
if(code == NULL)
{
std::cout << "Cannot Allocate Memory for code";
exit(EXIT_FAILURE);
}
_i__ListOfLanguagesByCodeResponse *result;
result = (_i__ListOfLanguagesByCodeResponse *)malloc(sizeof(_i__ListOfLanguagesByCodeResponse));
if(result == NULL)
{
std::cout << "Cannot Allocate Memory for result";
exit(EXIT_FAILURE);
}
code = (_i__ListOfLanguagesByCode *)("tur");
__ns1__ListOfLanguagesByCode(soap, code, result);
std::cout << "result = " << result << std::endl;
return 0;
}
Я не мог понять, где находится моя ошибка или какая-то часть, которую мне не хватает. В принципе, я хочу дать код (который является «тур» в моем примере) и увидеть результат службы.
Любая помощь будет оценена по достоинству.
EDIT: Вот список всех CPP и .h файл в проект ..
[email protected] soapCountries]$ ll
total 1408
-rw-rw-r-- 1 mg papilon 560 May 22 10:04 CountryInfoServiceSoapBinding.nsmap
-rw-rw-r-- 1 mg papilon 1220 May 22 13:00 main.cpp
-rw-rw-r-- 1 mg papilon 1135 May 22 13:21 main.cpp.autosave
-rw-rw-r-- 1 mg papilon 707557 May 22 10:04 soapC.cpp
-rw-rw-r-- 1 mg papilon 48024 May 22 10:04 soapClient.cpp
-rw-rw-r-- 1 mg papilon 373 May 22 10:04 soapClientLib.cpp
-rw-rw-r-- 1 mg papilon 252 May 22 12:58 soapCountries.pro
-rw-rw-r-- 1 mg papilon 17907 May 22 15:02 soapCountries.pro.user
-rw-rw-r-- 1 mg papilon 7148 May 22 12:01 soapCountryInfoServiceSoapBindingProxy.h
-rw-rw-r-- 1 mg papilon 151092 May 22 10:04 soapH.h
-rw-rw-r-- 1 mg papilon 39137 May 22 10:04 soapServer.cpp
-rw-rw-r-- 1 mg papilon 373 May 22 10:04 soapServerLib.cpp
-rw-rw-r-- 1 mg papilon 49034 May 22 10:04 soapStub.h
-rw-r--r-- 1 mg papilon 311882 Jun 6 2004 stdsoap2.cpp
-rw-r--r-- 1 mg papilon 56325 Jun 6 2004 stdsoap2.h
EDIT 2:
Определение Int __ns1__ListOfLanguagesByCode
, который расположен внутри "soapCountryInfoServiceSoapBindingProxy.h"
virtual int __ns1__ListOfLanguagesByCode(_i__ListOfLanguagesByCode *i__ListOfLanguagesByCode, _i__ListOfLanguagesByCodeResponse *i__ListOfLanguagesByCodeResponse) { return soap ? soap_call___ns1__ListOfLanguagesByCode(soap, endpoint, NULL, i__ListOfLanguagesByCode, i__ListOfLanguagesByCodeResponse) : SOAP_EOM; }
Вы добавили все файлы, созданные gsoap? Я думаю, что он генерирует больше файлов (например, файл cpp для bindingproxy). Также найдите в файле cpp __ns1__ListOfLanguagesByCode функцию – demonplus
@demonplus, пожалуйста, см. Edit .. Я написал все файлы cpp и .h, которые включены в проект – goGud
, вы могли бы найти функцию __ns1__ListOfLanguagesByCode в любом из этих файлов cpp? – demonplus