c++visual-c++log4cxx

building log4cxx in vs 2010 c++


This is driving me crazy, I'm trying to building the log4cxx library in order to use in a c++ project I've been using. I'm on a win7 host running VS2010 express c++ edition. I've followed the directions per the log4cxx directions ( ) including downloading apr and apr-util and motifying the .hw files, but I unfortunately, when ever I try to load the log4cxx.dsw solution and convert it to the current VS, I receive an error trying to build apr.apr/dsw and a bunch of other dependent .dsw files. Any suggestions?

Specifically, what I am seeing is:

The Project file 'C:\...projects\apr-util\xml\expat\lib\xml.dsp' cannot be loaded. Do you want to remove the unloadable project from the solution?

I see this for a bunch of other .dsp files.

then in the output box in VC:

C:\Users\x\Documents\Visual Studio 2010\Projects\apr\apr.dsp : error  : Project upgrade failed.

C:\Users\x\Documents\Visual Studio 2010\Projects\apr-util\xml\expat\lib\xml.dsp : error  : Project upgrade failed.

C:\Users\x\Documents\Visual Studio 2010\Projects\apr-util\aprutil.dsp : error  : Project upgrade failed.

C:\Users\x\Documents\Visual Studio 2010\Projects\apache-log4cxx-0.10.0\projects\log4cxx.dsp : error  : Project upgrade failed.

Thanks

The files are in the correct path.


Solution

  • You have to follow these steps to get log4cxx (Version 0.10.0) working with VS2010:

    1. Download the latest log4cxx package from here
    2. Download apr and apr-util ZIP packages from here
    3. Extract log4cxx, apr und apr-util to the same directory
    4. Rename the apr_VERSION and apr-util_VERSION folder to apr and apr-util resulting in a directory with three folder: apache-log4cxx-0.10.0, apr and apr-util
    5. Change into the log4cxx directory and execute configure.bat
    6. Change to apr-util/include direcotry and open apu.hw in a texteditor of your choice
    7. Find the entry #define APU_HAVE_APR_ICONV, set it to 0 and save the file
    8. Open apr_ldap.hw from the same directory and find the entry #define APR_HAS_LDAP, set it to 0 and save the file, too.
    9. Change to log4cxx/projects directory and open log4cxx.dsw with VS2010. Answer the converting prompts of VS2010 with yes/ok for each project (apr, apr-util, log4cxx, xml)

    Ok if you hit build now then you will see around 2000 errors and that is where the interesting and "hard" part starts:

    Some examples:

        // telnetadapter.h
        ...
        typedef log4cxx::helpers::SocketPtr Connection;
        LOG4CXX_LIST_DEF(ConnectionList, Connection);
        class LOG4CXX_EXPORT TelnetAppender : public AppenderSkeleton
        ...
    
        // appender.h
        ...
        class Appender;
        LOG4CXX_PTR_DEF(Appender);
        LOG4CXX_LIST_DEF(AppenderList, AppenderPtr);
    
        class Layout;
        typedef log4cxx::helpers::ObjectPtrT<Layout> LayoutPtr;
    
        ...
    
        class LOG4CXX_EXPORT Appender :
                    public virtual spi::OptionHandler
        {
        ...
    

    Example:

       // old
       LoggingEvent::KeySet set;
       // new
       KeySet set;
    

    Hope this helps you and some others :) ... if you need the whole solution or other files, let me know!

    I figured out these steps with the enormous help of this blog entry by Lex LI.

    EDIT: You can download my VS2010 solution and source code from my dropbox: https://www.dropbox.com/s/rn5d0044jzgzwyf/log4cxx_vs2010.7z