Menu

#409 stdsoap2.cpp fails compilation on XP with IPV6 and OpenSSL

closed-fixed
None
9
2015-02-07
2007-07-19
No

I am using gSoap version 2.7.9i and OpenSSL version 0.9.8b, and am having
trouble compiling stdsoap2.cpp with Visual Studio C++ .NET. The following preprocessor definitions are
in use:

WINVER=0x0400;WIN32;NDEBUG;_WINDOWS;_USRDLL;CACPLUGIN_EXPORTS;WITH_OPENSSL;
WITH_IPV6

The following is the compiler output. I think the problem is that winsock.h is getting included before WS2tcpip.h in stdsoap2.h. Things worked fine until I enabled IPV6 support.

>>>
Compiling...
stdsoap2.cpp
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(28) : error C2011: 'ip_mreq' : 'struct' type redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(372) : see declaration of 'ip_mreq'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(71) : warning C4005: 'IP_TOS' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(361) : see previous definition of 'IP_TOS'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(72) : warning C4005: 'IP_TTL' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(360) : see previous definition of 'IP_TTL'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(73) : warning C4005: 'IP_MULTICAST_IF' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(355) : see previous definition of 'IP_MULTICAST_IF'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(74) : warning C4005: 'IP_MULTICAST_TTL' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(356) : see previous definition of 'IP_MULTICAST_TTL'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(75) : warning C4005: 'IP_MULTICAST_LOOP' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(357) : see previous definition of 'IP_MULTICAST_LOOP'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(76) : warning C4005: 'IP_ADD_MEMBERSHIP' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(358) : see previous definition of 'IP_ADD_MEMBERSHIP'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(77) : warning C4005: 'IP_DROP_MEMBERSHIP' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(359) : see previous definition of 'IP_DROP_MEMBERSHIP'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(78) : warning C4005: 'IP_DONTFRAGMENT' : macro redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WinSock.h(362) : see previous definition of 'IP_DONTFRAGMENT'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(314) : error C2065: 'AF_INET6' : undeclared identifier
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(321) : error C3861: 'AF_INET6': identifier not found, even with argument-dependent lookup
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(341) : error C3861: 'AF_INET6': identifier not found, even with argument-dependent lookup
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(351) : error C3861: 'AF_INET6': identifier not found, even with argument-dependent lookup
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(378) : error C2146: syntax error : missing ';' before identifier 'iiAddress'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(378) : error C2501: '_INTERFACE_INFO_EX::SOCKET_ADDRESS' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(378) : error C2501: '_INTERFACE_INFO_EX::iiAddress' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(379) : error C2146: syntax error : missing ';' before identifier 'iiBroadcastAddress'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(379) : error C2501: '_INTERFACE_INFO_EX::SOCKET_ADDRESS' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(379) : error C2501: '_INTERFACE_INFO_EX::iiBroadcastAddress' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(380) : error C2146: syntax error : missing ';' before identifier 'iiNetmask'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(380) : error C2501: '_INTERFACE_INFO_EX::SOCKET_ADDRESS' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(380) : error C2501: '_INTERFACE_INFO_EX::iiNetmask' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(489) : error C2144: syntax error : 'int' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(489) : error C2501: 'WINSOCK_API_LINKAGE' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(490) : error C2146: syntax error : missing ';' before identifier 'getaddrinfo'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(499) : error C2144: syntax error : 'int' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(499) : error C2501: 'WINSOCK_API_LINKAGE' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(499) : error C2086: 'int WINSOCK_API_LINKAGE' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(488) : see declaration of 'WINSOCK_API_LINKAGE'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(500) : error C2146: syntax error : missing ';' before identifier 'GetAddrInfoW'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(500) : error C2086: 'int WSAAPI' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(490) : see declaration of 'WSAAPI'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(546) : error C2144: syntax error : 'void' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(546) : error C2501: 'WINSOCK_API_LINKAGE' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(546) : error C2086: 'int WINSOCK_API_LINKAGE' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(488) : see declaration of 'WINSOCK_API_LINKAGE'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(547) : error C2146: syntax error : missing ';' before identifier 'freeaddrinfo'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(547) : error C2182: 'WSAAPI' : illegal use of type 'void'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(547) : error C2086: 'int WSAAPI' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(490) : see declaration of 'WSAAPI'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(553) : error C2144: syntax error : 'void' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(553) : error C2501: 'WINSOCK_API_LINKAGE' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(553) : error C2086: 'int WINSOCK_API_LINKAGE' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(488) : see declaration of 'WINSOCK_API_LINKAGE'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(554) : error C2146: syntax error : missing ';' before identifier 'FreeAddrInfoW'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(554) : error C2182: 'WSAAPI' : illegal use of type 'void'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(554) : error C2086: 'int WSAAPI' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(490) : see declaration of 'WSAAPI'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(651) : error C2144: syntax error : 'int' should be preceded by ';'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(651) : error C2501: 'WINSOCK_API_LINKAGE' : missing storage-class or type specifiers
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(651) : error C2086: 'int WINSOCK_API_LINKAGE' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(488) : see declaration of 'WINSOCK_API_LINKAGE'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(652) : error C2146: syntax error : missing ';' before identifier 'getnameinfo'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(652) : error C2086: 'int WSAAPI' : redefinition
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WS2tcpip.h(490) : see declaration of 'WSAAPI'
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WSPiApi.h(249) : error C2065: 'WSA_NOT_ENOUGH_MEMORY' : undeclared identifier
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WSPiApi.h(351) : error C3861: 'WSA_NOT_ENOUGH_MEMORY': identifier not found, even with argument-dependent lookup
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WSPiApi.h(402) : error C3861: 'WSA_NOT_ENOUGH_MEMORY': identifier not found, even with argument-dependent lookup
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WSPiApi.h(604) : error C3861: 'WSA_NOT_ENOUGH_MEMORY': identifier not found, even with argument-dependent lookup
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\WSPiApi.h(618) : error C3861: 'WSA_NOT_ENOUGH_MEMORY': identifier not found, even with argument-dependent lookup
c:\work\abhatnagar_dev\V3.5_main\main\ITV\DM\CACPlugin\stdsoap2.h(1667) : error C2079: 'soap::peer' uses undefined struct 'sockaddr_storage'
stdsoap2.cpp(513) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
stdsoap2.cpp(515) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
stdsoap2.cpp(865) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
stdsoap2.cpp(873) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
stdsoap2.cpp(2866) : warning C4267: 'argument' : conversion from 'size_t' to 'unsigned int', possible loss of data
stdsoap2.cpp(2952) : warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data
stdsoap2.cpp(3499) : error C3861: 'gai_strerror': identifier not found, even with argument-dependent lookup
stdsoap2.cpp(3664) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
stdsoap2.cpp(3805) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
stdsoap2.cpp(4084) : error C2440: '=' : cannot convert from 'sockaddr_storage' to 'int'
Source or target has incomplete type
stdsoap2.cpp(4091) : error C3861: 'gai_strerror': identifier not found, even with argument-dependent lookup
stdsoap2.cpp(4094) : warning C4244: '=' : conversion from 'SOCKET' to 'int', possible loss of data
stdsoap2.cpp(4153) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data

Build log was saved at "file://c:\work\abhatnagar_dev\V3.5_main\main\Itv\Dm\CACPlugin\Release\BuildLog.htm"
CACPlugin - 48 error(s), 18 warning(s)
<<<

Discussion

  • Ajay Bhatnagar

    Ajay Bhatnagar - 2007-07-19
    • priority: 5 --> 9
     
  • Robert van Engelen

    Logged In: YES
    user_id=354274
    Originator: NO

    This problem will be fixed in gSOAP 2.7.9j to be released soon. It is an include dependence problem. Change stdsoap2.h around line 570 as follows:

    # ifdef WITH_IPV6
    # include <winsock2.h>
    # include <ws2tcpip.h>
    # include <wspiapi.h>
    # undef gai_strerror
    # define gai_strerror gai_strerrorA
    # else
    # include <winsock.h>

    move the

    #ifdef __cplusplus
    extern "C" {
    #endif

    down after the #includes above

     
  • Robert van Engelen

    • assigned_to: nobody --> engelen
    • status: open --> pending-fixed
     
  • SourceForge Robot

    Logged In: YES
    user_id=1312539
    Originator: NO

    This Tracker item was closed automatically by the system. It was
    previously set to a Pending status, and the original submitter
    did not respond within 14 days (the time period specified by
    the administrator of this Tracker).

     
  • SourceForge Robot

    • status: pending-fixed --> closed-fixed
     

Log in to post a comment.

MongoDB Logo MongoDB