Hi, I'm really excited to use APR, but I'm having trouble getting my "Hello World" application to work with static linkage, on both Linux and Win32.
Basically, I have a single-file application: # // Main.cpp # #include <iostream> # #include "apr.h" # #include "apr_general.h" # # using namespace std; # # // main # int main( int argc, char const* const* argv ) # { # cout << "Hello world!"; # # // Start APR # apr_app_initialize( &argc, &argv, 0 ); # # unsigned char buf[10]; # apr_generate_random_bytes( buf, 10 ); # # // Done # apr_terminate( ); # return 0; # } I can successfully compile, link, and execute the file on Win32 with APR 1.0.0 when linking with the dynamic library: # $APRBASE\Debug\libapr-1.lib # $APRBASE\Debug\libapr-1.dll However, if I try to link with the static library on Win32: # $APRBASE\libd\apr-1.lib I get the following linker errors: # Linking... # main.obj : error LNK2019: unresolved external symbol __imp__apr_terminate referenced in function _main # main.obj : error LNK2019: unresolved external symbol [EMAIL PROTECTED] referenced in function _main # main.obj : error LNK2019: unresolved external symbol [EMAIL PROTECTED] referenced in function _main # Debug/APRtest.exe : fatal error LNK1120: 3 unresolved externals Likewise, I can compile and link on Linux (Fedora Core 2) using the shared library using the following Ant build file: # <project name="aprtest" default="compile"> # <target name="compile"> # <exec executable="g++"> # <arg value="-oaprtest"/> # <arg value="-I./unixlibs/apr-1/include/apr-1"/> # <arg value="-L./unixlibs/apr-1/lib"/> # <arg value="-lapr-1"/> # <arg value="-shared"/> # <arg file="main.cpp"/> # </exec> # </target> # </project> But if I change line 8 from "-shared" to "-static", I get the following linker errors: # compile: # [exec] /tmp/ccNWTzJF.o(.text+0x33): In function `main': # [exec] : undefined reference to `apr_app_initialize' # [exec] /tmp/ccNWTzJF.o(.text+0x44): In function `main': # [exec] : undefined reference to `apr_generate_random_bytes' # [exec] /tmp/ccNWTzJF.o(.text+0x4c): In function `main': # [exec] : undefined reference to `apr_terminate' # [exec] collect2: ld returned 1 exit status So, I'm seeing the exact same problem on both platforms. Obviously I'm doing something wrong, and I'm hoping it's something simple. Does anyone see what I should do differently to get static linkage to work? -david