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