Using Visual Studio 2013 command line tools, on Windows Server 2012 rc2.
Running everything from batch files through Cygwin. I cloned the APR repo
from here: https://github.com/apache/apr

I downloaded some prebuilt libxml2 and iconv binaries for Windows. Then, I
ran the commands:

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
"C:\Program Files (x86)\CMake\bin\cmake" -G "NMake Makefiles"
-DLIBXML2_LIBRARIES=C:\lib\libxml2-2.7.8.win32\lib\libxml2.lib
-DLIBXML2_INCLUDE_DIR=C:\lib\libxml2-2.7.8.win32\include
-DLIBXML2_ICONV_INCLUDE_DIR=C:\lib\iconv-1.9.2.win32\include
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=..\built ..

That worked fine. Then, I tried running nmake on the generated makefiles,
which ran fine until it tried to link libapr-2.dll. That got me the
following errors:

Linking C shared library libapr-1.dll
   Creating library libapr-1.lib and object libapr-1.exp
apr_atomic.c.obj : error LNK2019: unresolved external symbol
__InterlockedIncrement referenced in function _apr_atomic_inc32@4
apr_atomic.c.obj : error LNK2019: unresolved external symbol
__InterlockedExchangeAdd referenced in function _apr_atomic_add32@8
apr_atomic.c.obj : error LNK2019: unresolved external symbol
__InterlockedExchange referenced in function _apr_atomic_set32@8
apr_atomic.c.obj : error LNK2019: unresolved external symbol
__InterlockedDecrement referenced in function _apr_atomic_dec32@4
apr_atomic.c.obj : error LNK2019: unresolved external symbol
__InterlockedCompareExchange referenced in function _apr_atomic_cas32@12
libapr-1.dll : fatal error LNK1120: 5 unresolved externals

After some searching, I ran across a unimrcp thread that talked about
solving this issue. I tracked down the APR patches they are using in that
project here:
https://sites.google.com/a/unimrcp.org/unimrcp/dependencies/apr-1.5.1.tar.gz?attredirects=0&d=1

Specifically, check out the patch labeled as 0002. it boils down to
removing all the typesafe casts in apr_atomic.c, which introduces a bunch
of compiler warnings. That seems to work, though I doubt it's the right
thing to do. I also tried checking out the 1.5.x branch of APR, which give
the same errors. I don't generally develop on Windows, so this one has me
stumped. Any ideas?

Reply via email to