Hi,

I'm trying to wrap my head around building APR on Windows.

The website [1] contains instructions on running for running msdev on
aprutil.dsw or to open aprutil.dsw in Visual Studio. However I don't have
msdev on my installation (Visual Studio Community 2022) and the support for
.dsw files was deprecated in Visual Studio 2022.

The README file suggests to run nmake but that failed out of the box with
an error in apr_arch_misc.h:

[[[
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): error
C2143: syntax error: missing ')' before '*'
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): error
C2143: syntax error: missing '{' before '*'
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): error
C2059: syntax error: ')'
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(510): error
C2061: syntax error: identifier 'apr_winapi_pfn_if_indextoname'
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(510): error
C2059: syntax error: ';'
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): error
C2513: ' ': no variable declared before '='
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(510): error
C2065: 'apr_winapi_pfn_if_indextoname': undeclared identifier
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): warning
C4047: '=': 'int' differs in levels of indirection from 'int *(__cdecl
*)(NET_IFINDEX,PCHAR)'
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(510): error
C2146: syntax error: missing ';' before identifier 'apr_load_dll_func'
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): error
C2100: illegal indirection
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): error
C2064: term does not evaluate to a function taking 0 arguments
C:\Devel\apr_1.7.4\apr\include\arch\win32\apr_arch_misc.h(507): warning
C4033: 'apr_winapi_if_indextoname' must return a value
]]]

Editing include\apr.hw and changing _WIN32_WINNT to 0x0601 made the build
go a lot further but it ended with:

[[[
        link.exe /nologo /debug /subsystem:console /incremental:no
/out:"LibR\testall.exe" LibR\testutil.obj LibR\testtime.obj
LibR\teststr.obj LibR\testvsn.obj LibR\testipsub.obj LibR\testmmap.obj
LibR\testud.obj LibR\testtable.obj LibR\testsleep.obj LibR\testpools.obj
LibR\testfmt.obj LibR\testfile.obj LibR\testdir.obj LibR\testfileinfo.obj
LibR\testrand.obj LibR\testdso.obj LibR\testoc.obj LibR\testdup.obj
LibR\testsockets.obj LibR\testproc.obj LibR\testpoll.obj LibR\testlock.obj
LibR\testsockopt.obj LibR\testpipe.obj LibR\testthread.obj
LibR\testhash.obj LibR\testargs.obj LibR\testnames.obj LibR\testuser.obj
LibR\testpath.obj LibR\testenv.obj LibR\testprocmutex.obj
LibR\testfnmatch.obj LibR\testatomic.obj LibR\testflock.obj
LibR\testshm.obj LibR\testsock.obj LibR\testglobalmutex.obj
LibR\teststrnatcmp.obj LibR\testfilecopy.obj LibR\testtemp.obj
LibR\testlfs.obj LibR\testcond.obj LibR\testescape.obj
LibR\testskiplist.obj LibR\testencode.obj LibR\abts.obj ..\LibR\apr-1.lib
kernel32.lib advapi32.lib ws2_32.lib wsock32.lib  ole32.lib shell32.lib
rpcrt4.lib
testutil.obj : error LNK2019: unresolved external symbol
__imp__CrtSetReportFile referenced in function initialize
testutil.obj : error LNK2019: unresolved external symbol
__imp__CrtSetReportMode referenced in function initialize
LibR\testall.exe : fatal error LNK1120: 2 unresolved externals
NMAKE : fatal error U1077: 'link.exe /nologo /debug /subsystem:console
/incremental:no /out:"LibR\testall.exe" LibR\testutil.obj LibR\testtime.obj
LibR\teststr.obj LibR\testvsn.obj LibR\testipsub.obj LibR\testmmap.obj
LibR\testud.obj LibR\testtable.obj LibR\testsleep.obj LibR\testpools.obj
LibR\testfmt.obj LibR\testfile.obj LibR\testdir.obj LibR\testfileinfo.obj
LibR\testrand.obj LibR\testdso.obj LibR\testoc.obj LibR\testdup.obj
LibR\testsockets.obj LibR\testproc.obj LibR\testpoll.obj LibR\testlock.obj
LibR\testsockopt.obj LibR\testpipe.obj LibR\testthread.obj
LibR\testhash.obj LibR\testargs.obj LibR\testnames.obj LibR\testuser.obj
LibR\testpath.obj LibR\testenv.obj LibR\testprocmutex.obj
LibR\testfnmatch.obj LibR\testatomic.obj LibR\testflock.obj
LibR\testshm.obj LibR\testsock.obj LibR\testglobalmutex.obj
LibR\teststrnatcmp.obj LibR\testfilecopy.obj LibR\testtemp.obj
LibR\testlfs.obj LibR\testcond.obj LibR\testescape.obj
LibR\testskiplist.obj LibR\testencode.obj LibR\abts.obj ..\LibR\apr-1.lib
kernel32.lib advapi32.lib ws2_32.lib wsock32.lib  ole32.lib shell32.lib
rpcrt4.lib' : return code '0x460'
Stop.
]]]

I'm surely doing something wrong here... appreciating any advice and/or
pointers!

Kind regards,
Daniel Sahlberg


[1] https://apr.apache.org/compiling_win32.html
[2]
https://learn.microsoft.com/en-us/cpp/porting/upgrading-projects-from-earlier-versions-of-visual-cpp?view=msvc-170

Reply via email to