В Linux-системе я хочу создать клиентское приложение с использованием gSOAP-2.8.8, которое взаимодействует с сервисом SOAP, созданным на WCF. Поэтому я пошел по следующему:Невозможно скомпилировать gSOAP с поддержкой WS-Security (т. Е. Wsse-plugin)
wsdl2h -t typemap.dat -o myService.h myService.wsdl
soapcpp2 -Igsoap/import -CLix myService.h
И заменить '#include soapH.h' в wsseapi.h с soapcpp2 сгенерированных soapH.h, как указано в wsseapi.h
Затем, критический шаг чтобы вручную добавить следующие строки в myService.h
#import "wsse.h"
struct SOAP_ENV__Header"
{
mustUnderstand // must be understood by receiver
_wsse__Security *wsse__Security; ///< TODO: Check element type (imported type)
};
... и компилировать эти файлы как
g++ -DWITH_DOM -DWITH_OPENSSL -Igsoap -Igsoap/import -Igsoap/plugin -o test \
myService.cpp soapC.cpp soapmyServiceProxy.cpp gsoap/stdsoap2.cpp gsoap/dom.cpp \
gsoap/custom/duration.c gsoap/plugin/wsseapi.cpp gsoap/plugin/smdevp.c gsoap/plugin/mecevp.c \
-L/usr/lib -lssl -lcrypt
Я получаю объектные файлы для всех моих источников ;-), но все равно получаю две ошибки на этапе компоновки.
soapC.cpp:203: undefined reference to `soap_in_ns4__duration(soap*, char const*, long long*, char const*)'
soapC.cpp:676: undefined reference to `soap_in_ns4__duration(soap*, char const*, long long*, char const*)'
Edit: В качестве обходного пути я в настоящее время заменить soap_in_ns4__duration() с soap_in_xsd__duration(), которая реализуется в обычае/duration.c
Тем не менее, может кто-нибудь дать мне подсказку, что происходит Неправильно здесь ?! Заранее спасибо
Я не понял, у меня уже есть soapmyServiceProxy.h, который, в свою очередь, включает soapH.h Итак, как это должно помочь? – user696597
извините, я не осознал этого, но после включения также вы получаете эти ошибки, означает, что некоторые вещи имеют дело с заголовочными файлами и тем, как вы вызываете методы. У меня была аналогичная проблема, когда я начал использовать gsoap 2.8.8, и я могу ее исправить, поэтому, если вы можете предоставить какой-то подробный код, который вы делаете, я могу попробовать его исправить. Я знаю, что трудно решить эти проблемы с gsoap, и я много боролся с этим. Пожалуйста, предоставьте подробный код, который я попробую помочь вам разобраться. – krishna555