Stefan Jipa created LOGCXX-552:
----------------------------------

             Summary: Log4cxx 0.12.1 it is not working on windows platform
                 Key: LOGCXX-552
                 URL: https://issues.apache.org/jira/browse/LOGCXX-552
             Project: Log4cxx
          Issue Type: Bug
          Components: Build, Documentation
    Affects Versions: 0.12.1
            Reporter: Stefan Jipa
             Fix For: 0.12.1


Hi,

We want to upgrade log4cxx from 0.11.0 to 0.12.1.
We have some problems when trying to use log4cxx 0.12.1 on windows platform.
We succeded to compile it (here steps (we are using c++17)):
-copy src/main/include/log4cxx/log4cxx.hw to src/main/include/log4cxx/log4cxx.h
-copy src/main/include/log4cxx/private/log4cxx_private.hw 
src/main/include/log4cxx/private/log4cxx_private.h
-we disable odbc by commenting:
    apache-log4cxx-0.12.1\src\main\include\CMakeLists.txt
                    #if(WIN32)
                    #    CHECK_INCLUDE_FILES(sqlext.h HAS_ODBC)
                    #else()
                    #    include(FindPkgConfig)
                    #
                    #    pkg_check_modules( odbc QUIET odbc )
                    #    if(${odbc_FOUND})
                    #        set(HAS_ODBC 1)
                    #    endif(${odbc_FOUND})
                    #endif(WIN32)
-we use x64 Native Tools Command Prompt for VS 2019 (c++17)
    cmake -S . -B build -G"Visual Studio 16 2019" -A x64 
-DAPR_INCLUDE_DIR=path_to_apr\include\apr-1\ 
-DAPR_LIBRARIES=path_to_apr\lib\libapr-1.lib 
-DAPR_UTIL_INCLUDE_DIR=path_to_apr-util\include\apr-1\ 
-DAPR_UTIL_LIBRARIES=path_to_apr-util\lib\libaprutil-1.lib
    -DBUILD_TESTING=OFF -DEXPAT_LIBRARY=path_to_expat\lib\expat.lib 
-DEXPAT_INCLUDE_DIR=path_to_expat\include
-open build/log4cxx.sln with VS 2019 and compile it in release mode x64 (with 
Windows SDK Version 10.0.19041.0)
-copy from src/main/include all .h files to a different location
-copy from build/src/main/cpp/Release/ log4cxx dll and lib files to a different 
location
-delete build folder
-in another x64 Native Tools Command Prompt for VS 2019
    cmake -S . -B build -G"Visual Studio 16 2019" -A x64 
-DBUILD_SHARED_LIBS=OFF -DAPR_INCLUDE_DIR=path_to_apr\include\apr-1\ 
-DAPR_LIBRARIES=path_to_apr\lib\libapr-1.lib 
-DAPR_UTIL_INCLUDE_DIR=path_to_apr-util\include\apr-1\ 
-DAPR_UTIL_LIBRARIES=path_to_apr-util\lib\libaprutil-1.lib
    -DBUILD_TESTING=OFF -DEXPAT_LIBRARY=path_to_expat\lib\expat.lib 
-DEXPAT_INCLUDE_DIR=path_to_expat\include
-open build/log4cxx.sln with VS 2019 and compile it in release mode x64 (with 
Windows SDK Version 10.0.19041.0 and Code Generation -> Runtime Library -> 
Multi-threaded(/MT)) 
-copy build/src/main/cpp/Release/log4cxx.lib to a different location


When we try to compile a module which is using log4cxx code we get a stack full 
of errors
generated from PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h caused by 
log4cxx::helpers::ObjectPtrT<T>.
We saw that log4cxx.hw was not updated and we replaced all apparitions of 
log4cxx::helpers::ObjectPtrT<T>
with std::shared_ptr<T>. With this we managed to get rid of all that errors, 
but we have this stack of errors
generated directly from log4cxx code:

PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(105): error C2039: 
'LoggerRepositoryWeakPtr': is not a member of 'log4cxx::spi'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(45): note: see declaration of 
'log4cxx::spi'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(105): error C3646: 
'repository': unknown override specifier
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(105): error C4430: missing type 
specifier - int assumed. Note: C++ does not support default-int
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(626): error C2039: 
'LoggerRepositoryWeakPtr': is not a member of 'log4cxx::spi'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(45): note: see declaration of 
'log4cxx::spi'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(626): error C3646: 
'getLoggerRepository': unknown override specifier
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(626): error C2059: syntax 
error: '('
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(626): error C2238: unexpected 
token(s) preceding ';'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(1467): error C2039: 
'LoggerRepositoryWeakPtr': is not a member of 'log4cxx::spi'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(45): note: see declaration of 
'log4cxx::spi'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(1467): error C2061: syntax 
error: identifier 'LoggerRepositoryWeakPtr'
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(1729): error C3646: 'mutex': 
unknown override specifier
PATH_to_log4cxx_0.12.1\include\log4cxx/logger.h(1729): error C4430: missing 
type specifier - int assumed. Note: C++ does not support default-int
PATH_to_log4cxx_0.12.1\include\log4cxx/appenderskeleton.h(77): error C2039: 
'shared_mutex': is not a member of 'log4cxx'
PATH_to_log4cxx_0.12.1\include\log4cxx/appenderskeleton.h(35): note: see 
declaration of 'log4cxx'
PATH_to_log4cxx_0.12.1\include\log4cxx/appenderskeleton.h(77): error C3646: 
'mutex': unknown override specifier
PATH_to_log4cxx_0.12.1\include\log4cxx/appenderskeleton.h(77): error C4430: 
missing type specifier - int assumed. Note: C++ does not support default-int
PATH_to_log4cxx_0.12.1\include\log4cxx/writerappender.h(28): fatal error C1083: 
Cannot open include file: 'log4cxx/boost-std-configuration.h': No such file or 
directory

I mention that we mananged to upgrade succesfully on unix (RHEL 8.3 and Suse 
15.2) to log4cxx 0.12.1.
Also I adapted our code regarding this 
https://logging.apache.org/log4cxx/latest_stable/changelog.html

Please patch log4cxx 0.12.1 on windows platform or if there are some step which 
we are missing/doing wrong when we compile log4cxx 0.12.1 on windows please 
guide us.

Can you check if log4cxx.hw needs more changes to fix this or is also a problem 
elsewhere?

 

Thanks,
Stefan Jipa



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to