Thread: [Log4cplus-devel] Using log4cplus with Qt 4.8.1
Logging Framework for C++
Brought to you by:
wilx
From: Ulrich H. <uhe...@ib...> - 2012-06-06 16:54:59
|
Hi, i download yesterday the version log4cplus-1.1.0-rc5 and compile all configurations with Visual Studio 2010 without errors. Then i create a test console program with Qt 4.8.1. In the main.cpp I write the following: #include <QtCore/QCoreApplication> #include <log4cplus/logger.h> #include <log4cplus/configurator.h> #include <log4cplus/fileappender.h> #include <log4cplus/layout.h> #include <log4cplus/ndc.h> #include <log4cplus/helpers/loglog.h> #include <log4cplus/loggingmacros.h> #include <iomanip> using namespace std; using namespace log4cplus; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); PropertyConfigurator logger(L"log4cplus.conf", log4cplus::Logger::getDefaultHierarchy()); logger.configure(); Logger::getRoot().log(INFO_LOG_LEVEL, L"Projektcenter"); helpers::LogLog::getLogLog()->setInternalDebugging(true); SharedAppenderPtr append_1(new RollingFileAppender(LOG4CPLUS_TEXT("Test.log"), 5*1024, 5)); append_1->setName(LOG4CPLUS_TEXT("First")); append_1->setLayout( std::auto_ptr<Layout>(new TTCCLayout()) ); Logger::getRoot().addAppender(append_1); Logger root = Logger::getRoot(); Logger test = Logger::getInstance(LOG4CPLUS_TEXT("test")); Logger subTest = Logger::getInstance(LOG4CPLUS_TEXT("test.subtest")); return a.exec(); } I set it include path to log4cplus-1.1.0-rc5/include and add the library log4cplus-1.1.0-rc5/msvc10/win32/bin.Debug_Unicode/log4cplusUD.lib. But i get 4 linker errors from Visual Studio: 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static class log4cplus::Logger __cdecl log4cplus::Logger::getInstance(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &)" (?getInstance@Logger@log4cplus@@SA?AV12@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@Z)" in Funktion "_main". 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall log4cplus::RollingFileAppender::RollingFileAppender(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &,long,int,bool)" (??0RollingFileAppender@log4cplus@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@JH_N@Z)" in Funktion "_main". 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall log4cplus::Logger::log(int,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &,char const *,int)const " (?log@Logger@log4cplus@@QBEXHABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@PBDH@Z)" in Funktion "_main". 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall log4cplus::PropertyConfigurator::PropertyConfigurator(class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > const &,class log4cplus::Hierarchy &,unsigned int)" (??0PropertyConfigurator@log4cplus@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAVHierarchy@1@I@Z)" in Funktion "_main". What's wrong? Thanks Ulrich |
From: Václav Z. <vha...@gm...> - 2012-06-06 18:51:17
Attachments:
signature.asc
|
On 06/06/2012 06:28 PM, Ulrich Heinicke wrote: > Hi, > i download yesterday the version log4cplus-1.1.0-rc5 and compile all > configurations with Visual Studio 2010 without errors. Then i create a > test console program with Qt 4.8.1. In the main.cpp I write the following: > > #include <QtCore/QCoreApplication> > #include <log4cplus/logger.h> > #include <log4cplus/configurator.h> > #include <log4cplus/fileappender.h> > #include <log4cplus/layout.h> > #include <log4cplus/ndc.h> > #include <log4cplus/helpers/loglog.h> > #include <log4cplus/loggingmacros.h> > > #include <iomanip> > > using namespace std; > using namespace log4cplus; > > int main(int argc, char *argv[]) > { > QCoreApplication a(argc, argv); > > PropertyConfigurator logger(L"log4cplus.conf", > log4cplus::Logger::getDefaultHierarchy()); > logger.configure(); > Logger::getRoot().log(INFO_LOG_LEVEL, L"Projektcenter"); > > helpers::LogLog::getLogLog()->setInternalDebugging(true); > SharedAppenderPtr append_1(new > RollingFileAppender(LOG4CPLUS_TEXT("Test.log"), 5*1024, 5)); > append_1->setName(LOG4CPLUS_TEXT("First")); > append_1->setLayout( std::auto_ptr<Layout>(new TTCCLayout()) ); > Logger::getRoot().addAppender(append_1); > > Logger root = Logger::getRoot(); > Logger test = Logger::getInstance(LOG4CPLUS_TEXT("test")); > Logger subTest = Logger::getInstance(LOG4CPLUS_TEXT("test.subtest")); > > return a.exec(); > } > > I set it include path to log4cplus-1.1.0-rc5/include and add the library > log4cplus-1.1.0-rc5/msvc10/win32/bin.Debug_Unicode/log4cplusUD.lib. > But i get 4 linker errors from Visual Studio: > > 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes > Symbol ""public: static class log4cplus::Logger __cdecl > log4cplus::Logger::getInstance(class std::basic_string<unsigned > short,struct std::char_traits<unsigned short>,class > std::allocator<unsigned short> > const &)" > (?getInstance@Logger@log4cplus@@SA?AV12@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@@Z)" > in Funktion "_main". > 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes > Symbol ""public: __thiscall > log4cplus::RollingFileAppender::RollingFileAppender(class > std::basic_string<unsigned short,struct std::char_traits<unsigned > short>,class std::allocator<unsigned short> > const &,long,int,bool)" > (??0RollingFileAppender@log4cplus@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@JH_N@Z)" > in Funktion "_main". > 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes > Symbol ""public: void __thiscall log4cplus::Logger::log(int,class > std::basic_string<unsigned short,struct std::char_traits<unsigned > short>,class std::allocator<unsigned short> > const &,char const > *,int)const " > (?log@Logger@log4cplus@@QBEXHABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@PBDH@Z)" > in Funktion "_main". > 1>main.obj : error LNK2019: Verweis auf nicht aufgelöstes externes > Symbol ""public: __thiscall > log4cplus::PropertyConfigurator::PropertyConfigurator(class > std::basic_string<unsigned short,struct std::char_traits<unsigned > short>,class std::allocator<unsigned short> > const &,class > log4cplus::Hierarchy &,unsigned int)" > (??0PropertyConfigurator@log4cplus@@QAE@ABV?$basic_string@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@AAVHierarchy@1@I@Z)" > in Funktion "_main". > > What's wrong? It is likely that Qt is compiled with wchar_t = unsigned short. You will have to recompile log4cplus with the "/Zc:wchar_t-" option. -- VZ |