Как собрать gSOAP ISAPI IIS Visual Studio, VC

Если внимательно читать комментарии gSOAP, то сборка ISAPI/NSAPI модуля для  IIS и других веб серверов для Windows, поддерживающих NSAPI, будет успешна, если исключить чтение заголовочных файлов, связанных с сокетами из windows.h. Но сборка эта не работает, и, к сожалению, в форумах вы не найдете ответа, в чем причина того, что модуль возвращает или 100 Continue, или 1.

Можно попробовать собрать с использованием Cygwin, также, возможно, в более ранних версиях VS примеры из каталога gsoap/mod_gsoap/gsoap_win/iapi, и собираются успешно.

Но, если нужно собрать проекты под VS2010, надо сначала преобразовать проекты.

Потом вставить в ISAPI_SoapServerFactory.cpp строку

10: #define _WINSOCKAPI_
11: #include "ISAPI_SoapServerFactory.h"

чтобы исключить чтение из заголовочных файлов части, связанные с сокетами, как  написано в комментариях stdsoap.h

Еще надо заменить возвращаемый тип int в isapistream.h на _Longlong

26: _Longlong showmanyc() {return _cbTotalBytes - _cbRead;}

Так как soap_init() это макрос функции с составным именем, включающим номер версии gSOAP, то в soapcpp2.def линкер эту функцию не найдет. Можно посмотреть на макрос, как формируется имя, и вписать его в .DEF файл, я же просто обернул его в другую функцию soap_init_dll:

В calcserver.cpp добавить функцию

35: SOAP_FMAC5 void SOAP_FMAC6 soap_init_dll(struct soap *soap) {
36: soap_init(soap);
37: }

и в soapcpp2.def заменить soap_init на soap_init_dll

7: soap_init = soap_init_dll PRIVATE

Наконец, в ISAPI_Server.cpp надо добавить пропущенный конструктор и деструктор:

346: #ifdef __cplusplus
347: soap::soap() {
348: }
349: soap::~soap() {
350: }
351: #endif

Теперь проект можно собрать, но он правильно работать не будет.

В свойствах проектов выберите C++, Дополнительно и задайте:  Компилировать как код C++ (/TP).

Теперь в sdsoap2.h надо раскомментировать winsock2.h

// When you get macro redefinition errors when compiling:
// try arrange that <windows.h> is included after "stdsoap2.h"
// or define _WINSOCKAPI_ first:
// #define _WINSOCKAPI_ // stops windows.h including winsock.h
// #include <windows.h>
// #include "stdsoap2.h"
#include <winsock2.h>
# include <ws2tcpip.h>

Не забудем включить пути к включаемым файлам и исходным кодам gSOAP в VS.

Теперь все будет работать! 

В чем причина, что пришлось так много допиливать? Видимо в том, что не так много людей использует IIS, тем более в связке с gSOAP, да еще через ISAPI/NSAPI. Но если вам  помогло этот текст, значит, кому то это нужно.

Comments

comments

Powered by Facebook Comments

Как собрать gSOAP ISAPI IIS Visual Studio, VC: 12 комментариев

  1. http://www.ionicbathfootdetox.com/

    Bella Q, I feel your blueness. It is hard everywhere right now because so much is shifting. It is scary and anyone who isn't a little fearful isn't living on earth right now. How can any of us know what tomorrow will bring? Even if there was some success along the way, how do we know we can keep it? We don't. All we can do is have faith that all will be well so I keep that deep in my heart. The good news is that nothing ever stays the same and we can count on that. xo

  2. http://www.modestochirooffices.com/

    I remember reading a book when I was in elementary school (and fuck if I can’t find the damn thing now, other than a made for tv movie) called “Brothers By Choice”. Short version: two boys who grow up as friends but are more like family to each other than their biological family.There’s stuff I’ll rely on my family for, but there’s also stuff I know I can’t rely on them for. With friends, I can rely on them for everything.

  3. car insurance quotes

    VAA?! Blir alldeles PAFF! Gör folk det? Ringer, sms:ar till dig OCH barnen…!!! Nej hörre´ni! Lägg av med det!!!!Hoppas febern hÃ¥ller sg borta och att du verkligen fick "sova igen" lite.Hoppas att barnen har kommit in i SOMMARLOVS FEELINGEN =)Du finns i vÃ¥ra hjärtan Elisabeth!!! Och i mina tankar flera gÃ¥nger om dagen! Du är UNIK!!!KRAMAR

  4. car insurance quotes

    Sorry to hear about Gordon’s passing. We send our condolences to the entire Gordon Moody family and have known them for 35 years. We will miss his stories and wisdom for he was one of a kind. Our love and prayers are with you and your family.Mike and Sharon Hughlett — Mike and Sharon Hughlett

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *