Re: [Log4cplus-devel] Using log4cplus with Qt 4.8.1
Logging Framework for C++
Brought to you by:
wilx
|
From: Václav Z. <vha...@gm...> - 2012-06-06 18:51:17
|
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
|