Loading...

log4cxx-user@logging.apache.org

[Prev] Thread [Next]  |  [Prev] Date [Next]

linking errors when trying to use log4cxx as a static library (VC2008) Gerrit van Doorn Fri May 29 11:00:26 2009

Hi,

I compiled log4cxx as a DLL before and it worked perfectly. Now I wanted to use log4cxx (version 0.10.0) as a static library. I've set the "Configuration Type" to "Static Library .lib" in the log4cxx properties and I changed the Preprocessor -> Preprocessor definitions to LOG4CXX_STATIC. When I compile in release mode I get a library file that is about 14MB big. When I try to use this library in a simple program I get the following linker errors:

1>Linking...
1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static class log4cxx::helpers::ObjectPtrT<class log4cxx::Level> __cdecl log4cxx::Level::getWarn(void)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@XZ) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __thiscall log4cxx::helpers::MessageBuffer::str(class log4cxx::helpers::CharMessageBuffer &)" ([EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@@Z) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class log4cxx::helpers::CharMessageBuffer & __thiscall log4cxx::helpers::MessageBuffer::operator<<(char const *)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@[EMAIL PROTECTED]) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall log4cxx::helpers::MessageBuffer::~MessageBuffer(void)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall log4cxx::helpers::MessageBuffer::MessageBuffer(void)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: bool __thiscall log4cxx::Logger::isWarnEnabled(void)const " ([EMAIL PROTECTED]@log4cxx@@QBE_NXZ) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: static class log4cxx::helpers::ObjectPtrT<class log4cxx::Logger> __cdecl log4cxx::Logger::getLogger(char const * const)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@[EMAIL PROTECTED]) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall log4cxx::Logger::forcedLog(class log4cxx::helpers::ObjectPtrT<class log4cxx::Level> const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class log4cxx::spi::LocationInfo const &)const " ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@[EMAIL PROTECTED]@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@2@@std@@[EMAIL PROTECTED]@2@@Z) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall log4cxx::spi::LocationInfo::LocationInfo(char const * const,char const * const,int)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@Z) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: class log4cxx::Logger * __thiscall log4cxx::helpers::ObjectPtrT<class log4cxx::Logger>::operator->(void)const " ([EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@@[EMAIL PROTECTED]@XZ) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall log4cxx::helpers::ObjectPtrT<class log4cxx::Logger>::~ObjectPtrT<class log4cxx::Logger>(void)" ([EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@@[EMAIL PROTECTED]) 1>main.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall log4cxx::helpers::ObjectPtrT<class log4cxx::Level>::~ObjectPtrT<class log4cxx::Level>(void)" ([EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@@[EMAIL PROTECTED]) 1>C:\Documents and Settings\gerrit\My Documents\Visual Studio 2008\Projects\log4cxxStaticTest\Release\log4cxxStaticTest.exe : fatal error LNK1120: 12 unresolved externals

What am I doing wrong?

Here is the basic example:

#include <log4cxx/logger.h>

log4cxx::LoggerPtr  logger(log4cxx::Logger::getLogger("myLogger"));

void main(void) {
   LOG4CXX_WARN(logger, "Some warning");
}


- Gerrit