Not sure what you have going on here. A too-old flavor of the Windows
SDK, or a bad choice
of the minimum SDK version? It seems the HAVE_IF_INDEXTONAME is set in the
include/arch/win32/apr_private.h, which is included by
include/arch/win32/apr_arch_misc.h,
which then does this;
#if defined(HAVE_IF_INDEXTONAME) && defined(_MSC_VER)
#include <Iphlpapi.h>
#endif

If the if_indextoname/if_nametoindex functions aren't resolved, this
logic must be avoided;
#ifdef if_nametoindex
#undef if_nametoindex
#endif
APR_DECLARE_LATE_DLL_FUNC(DLL_IPHLPAPI, NET_IFINDEX, WINAPI,
if_nametoindex, 0, (
    IN PCSTR InterfaceName),
    (InterfaceName));
#define if_nametoindex apr_winapi_if_nametoindex

#ifdef if_indextoname
#undef if_indextoname
#endif
APR_DECLARE_LATE_DLL_FUNC(DLL_IPHLPAPI, PCHAR, NETIOAPI_API_,
if_indextoname, 0, (
    NET_IFINDEX InterfaceIndex,
    PCHAR       InterfaceName),
    (InterfaceIndex, InterfaceName));
#define if_indextoname apr_winapi_if_indextoname

Obviously those NET_IFINDEX declarations are required for this code to succeed.

But the biggest point is that _WIN32_WINNT needs to be set to latest
0x1010 and Windows
SDK needs to be up to date in order to conditionally support all
modern API calls, which is
most of what winsock wants to provide for modern apps (even truer unix
domain sockets).
The entire logic is to gracefully not support those calls,
conditionally, when the function
doesn't exist on an older version of the OS.

I checked, it's building fine here, did you forget to mention your
arguments to the cmake
invocation so we can sort this out? Which MSVC and which Windows SDK?



On Tue, Jun 14, 2022 at 8:02 AM Ivan Zhakov via dev <dev@apr.apache.org> wrote:
>
> When building using CMake:
>   
> C:\PROGRA~1\MIB055~1\2022\PROFES~1\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe
>   /nologo -DAPR_APP -DWINNT -IC:\Ivan\SVN\apr\apr-1.8.x\out\build\x64-Debug 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\unix 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\private /DWIN32 /D_WINDOWS /W3 /MDd /Zi 
> /Ob0 /Od /RTC1 /showIncludes 
> /FoCMakeFiles\libaprapp-1.dir\misc\win32\apr_app.c.obj 
> /FdCMakeFiles\libaprapp-1.dir\libaprapp-1.pdb /FS -c 
> C:\Ivan\SVN\apr\apr-1.8.x\misc\win32\apr_app.c
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing ')' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing '{' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ')'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2061: syntax error: identifier 'apr_winapi_pfn_if_indextoname'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ';'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2513: ' ': no variable declared before '='
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2065: 'apr_winapi_pfn_if_indextoname': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): warning 
> C4047: '=': 'int' differs in levels of indirection from 'int *(__cdecl 
> *)(NET_IFINDEX,PCHAR)'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2146: syntax error: missing ';' before identifier 'apr_load_dll_func'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2100: illegal indirection
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2064: term does not evaluate to a function taking 0 arguments
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): warning 
> C4033: 'apr_winapi_if_indextoname' must return a value
>   [3/239] Building C object CMakeFiles\aprapp-1.dir\misc\win32\internal.c.obj
>   FAILED: CMakeFiles/aprapp-1.dir/misc/win32/internal.c.obj
>   
> C:\PROGRA~1\MIB055~1\2022\PROFES~1\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe
>   /nologo -DAPR_APP -DAPR_DECLARE_STATIC -DWINNT 
> -IC:\Ivan\SVN\apr\apr-1.8.x\out\build\x64-Debug 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\unix 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\private /DWIN32 /D_WINDOWS /W3 /MDd /Zi 
> /Ob0 /Od /RTC1 /showIncludes 
> /FoCMakeFiles\aprapp-1.dir\misc\win32\internal.c.obj 
> /FdCMakeFiles\aprapp-1.dir\aprapp-1.pdb /FS -c 
> C:\Ivan\SVN\apr\apr-1.8.x\misc\win32\internal.c
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2143: syntax error: missing ')' before '__cdecl'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2143: syntax error: missing '{' before '__cdecl'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2059: syntax error: ')'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2165: 'left-side modifier': cannot modify pointers to data
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2061: syntax error: identifier 'apr_winapi_pfn_if_nametoindex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2059: syntax error: ';'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(496): error 
> C2513: ' ': no variable declared before '='
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2065: 'apr_winapi_pfn_if_nametoindex': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): warning 
> C4047: '=': 'int' differs in levels of indirection from 'int *(__cdecl 
> *)(PCSTR)'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2146: syntax error: missing ';' before identifier 'apr_load_dll_func'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2061: syntax error: identifier 'apr_winapi_if_nametoindex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2059: syntax error: '<parameter-list>'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing ')' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing '{' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ')'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2146: syntax error: missing ')' before identifier 'InterfaceIndex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2061: syntax error: identifier 'InterfaceIndex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ';'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ','
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2061: syntax error: identifier 'apr_winapi_pfn_if_indextoname'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2513: ' ': no variable declared before '='
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2065: 'apr_winapi_pfn_if_indextoname': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2065: 'apr_winapi_fpt_if_indextoname': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2146: syntax error: missing ';' before identifier 'apr_load_dll_func'
>   [4/239] Building C object 
> CMakeFiles\libaprapp-1.dir\misc\win32\internal.c.obj
>   FAILED: CMakeFiles/libaprapp-1.dir/misc/win32/internal.c.obj
>   
> C:\PROGRA~1\MIB055~1\2022\PROFES~1\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe
>   /nologo -DAPR_APP -DWINNT -IC:\Ivan\SVN\apr\apr-1.8.x\out\build\x64-Debug 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\unix 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\private /DWIN32 /D_WINDOWS /W3 /MDd /Zi 
> /Ob0 /Od /RTC1 /showIncludes 
> /FoCMakeFiles\libaprapp-1.dir\misc\win32\internal.c.obj 
> /FdCMakeFiles\libaprapp-1.dir\libaprapp-1.pdb /FS -c 
> C:\Ivan\SVN\apr\apr-1.8.x\misc\win32\internal.c
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2143: syntax error: missing ')' before '__cdecl'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2143: syntax error: missing '{' before '__cdecl'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2059: syntax error: ')'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2165: 'left-side modifier': cannot modify pointers to data
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2061: syntax error: identifier 'apr_winapi_pfn_if_nametoindex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2059: syntax error: ';'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(496): error 
> C2513: ' ': no variable declared before '='
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2065: 'apr_winapi_pfn_if_nametoindex': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): warning 
> C4047: '=': 'int' differs in levels of indirection from 'int *(__cdecl 
> *)(PCSTR)'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2146: syntax error: missing ';' before identifier 'apr_load_dll_func'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2061: syntax error: identifier 'apr_winapi_if_nametoindex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(498): error 
> C2059: syntax error: '<parameter-list>'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing ')' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing '{' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ')'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2146: syntax error: missing ')' before identifier 'InterfaceIndex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2061: syntax error: identifier 'InterfaceIndex'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ';'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ','
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2061: syntax error: identifier 'apr_winapi_pfn_if_indextoname'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2513: ' ': no variable declared before '='
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2065: 'apr_winapi_pfn_if_indextoname': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2065: 'apr_winapi_fpt_if_indextoname': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2146: syntax error: missing ';' before identifier 'apr_load_dll_func'
>   [5/239] Building C object CMakeFiles\aprapp-1.dir\misc\win32\apr_app.c.obj
>   FAILED: CMakeFiles/aprapp-1.dir/misc/win32/apr_app.c.obj
>   
> C:\PROGRA~1\MIB055~1\2022\PROFES~1\VC\Tools\MSVC\1432~1.313\bin\Hostx64\x64\cl.exe
>   /nologo -DAPR_APP -DAPR_DECLARE_STATIC -DWINNT 
> -IC:\Ivan\SVN\apr\apr-1.8.x\out\build\x64-Debug 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\arch\unix 
> -IC:\Ivan\SVN\apr\apr-1.8.x\include\private /DWIN32 /D_WINDOWS /W3 /MDd /Zi 
> /Ob0 /Od /RTC1 /showIncludes 
> /FoCMakeFiles\aprapp-1.dir\misc\win32\apr_app.c.obj 
> /FdCMakeFiles\aprapp-1.dir\aprapp-1.pdb /FS -c 
> C:\Ivan\SVN\apr\apr-1.8.x\misc\win32\apr_app.c
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing ')' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2143: syntax error: missing '{' before '*'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ')'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2061: syntax error: identifier 'apr_winapi_pfn_if_indextoname'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2059: syntax error: ';'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2513: ' ': no variable declared before '='
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2065: 'apr_winapi_pfn_if_indextoname': undeclared identifier
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): warning 
> C4047: '=': 'int' differs in levels of indirection from 'int *(__cdecl 
> *)(NET_IFINDEX,PCHAR)'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(507): error 
> C2146: syntax error: missing ';' before identifier 'apr_load_dll_func'
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2100: illegal indirection
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): error 
> C2064: term does not evaluate to a function taking 0 arguments
> C:\Ivan\SVN\apr\apr-1.8.x\include\arch\win32\apr_arch_misc.h(504): warning 
> C4033: 'apr_winapi_if_indextoname' must return a value
>   [6/239] Linking C executable gen_test_char.exe
>   ninja: build stopped: subcommand failed.
>
>
> --
> Ivan Zhakov

Reply via email to