logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Eborn, Eric D" <eric.d.eb...@lmco.com>
Subject RE: Log4cxx in my project, unresolved symbols despite hours of work
Date Wed, 28 Nov 2007 15:14:28 GMT
One thing I noticed also is that each of the errors (with static libs) is associated with the
following lines of code within my code:


LoggerPtr logger(Logger::getLogger("MyApp"));
LOG4CXX_INFO(logger, "Entering application.");

These lines were pulled out directly from the working app however, I'm terribly confused.
:(

 
 
Eric Eborn, 
Software Engineer
801-545-5449
eric.d.eborn@lmco.com
 

> -----Original Message-----
> From: Eborn, Eric D
> Sent: Wednesday, November 28, 2007 7:37 AM
> To: Log4CXX User
> Subject: RE: Log4cxx in my project, unresolved symbols despite hours of
> work
> 
> I had figured as much, that I wouldn’t need to use that directive if using
> shared libs, but it cleaned up a few errors of the following form:
> 
> class 'std::vector<_Ty>' needs to have dll-interface to be used by clients
> of class
> 
> However, the 3 remaining errors remain the same without that preprocessor
> diretive:
> 
> Generating Code...
> Linking...
>    Creating library .\Release/Camera.lib and object .\Release/ Camera.exp
> Filters.obj : error LNK2019: unresolved external symbol
> "__declspec(dllimport) public: static class
> log4cxx::helpers::ObjectPtrT<class log4cxx::Level> const & __stdcall
> log4cxx::Level::getInfo(void)"
> (__imp_?getInfo@Level@log4cxx@@SGABV?$ObjectPtrT@VLevel@log4cxx@@@helpers@
> 2@XZ) referenced in function "int __stdcall convert(unsigned char *,int
> &,int &)" (?convert@@YGHPAEAAH1@Z)
> Filters.obj : error LNK2019: unresolved external symbol
> "__declspec(dllimport) public: static class
> log4cxx::helpers::ObjectPtrT<class log4cxx::Logger> __stdcall
> log4cxx::Logger::getLogger(char const * const)"
> (__imp_?getLogger@Logger@log4cxx@@SG?AV?$ObjectPtrT@VLogger@log4cxx@@@help
> ers@2@QBD@Z) referenced in function "void __cdecl `dynamic initializer for
> 'logger''(void)" (??__Elogger@@YAXXZ)
> ..\Bin\ Camera.ax : fatal error LNK1120: 2 unresolved externals
> 
> One difference that comes to mind is that the first project I mentioned
> that I used the logger flawlessly with, it's configuration type is set to
> application (.exe), while the project that is failing is a Dynamic Library
> (.dll) (I'm building a DirectShow filter).  I can't imagine what
> differences there would be as far as logging is concerned but maybe it
> will give someone more insight on my problem.
> 
> For completeness, I've also now linked with the static lib, and added the
> preprocessor directive and get the same two unresolved symbol errors with
> an additional unresolved symbol error (note: I also linked 3 more libs
> that were generated statically log4cxx.lib apr-1.lib aprutil-1.lib
> cppunit.lib:
> 
> 
> Filters.obj : error LNK2019: unresolved external symbol "public: static
> class log4cxx::helpers::ObjectPtrT<class log4cxx::Level> const & __stdcall
> log4cxx::Level::getInfo(void)"
> (?getInfo@Level@log4cxx@@SGABV?$ObjectPtrT@VLevel@log4cxx@@@helpers@2@XZ)
> referenced in function "int __stdcall convert(unsigned char *,int &,int
> &)" (?convert@@YGHPAEAAH1@Z)
> Filters.obj : error LNK2019: unresolved external symbol "public: static
> class log4cxx::helpers::ObjectPtrT<class log4cxx::Logger> __stdcall
> log4cxx::Logger::getLogger(char const * const)"
> (?getLogger@Logger@log4cxx@@SG?AV?$ObjectPtrT@VLogger@log4cxx@@@helpers@2@
> QBD@Z) referenced in function "void __cdecl `dynamic initializer for
> 'logger''(void)" (??__Elogger@@YAXXZ)
> apr-1.lib(sendrecv.obj) : error LNK2019: unresolved external symbol
> _TransmitFile@28 referenced in function _apr_socket_sendfile@24
> 
> Thanks for your input
> 
> 
> > -----Original Message-----
> > From: Curt Arnold [mailto:carnold@apache.org]
> > Sent: Tuesday, November 27, 2007 2:28 PM
> > To: Log4CXX User
> > Subject: Re: Log4cxx in my project, unresolved symbols despite hours of
> > work
> >
> >
> > On Nov 27, 2007, at 3:07 PM, Eborn, Eric D wrote:
> >
> > > I’m using MSVC 2008 Express Edition.  I downloaded the SVN head
> > > today and built it fine (after some wrestling with it), and was able
> > > to use log4cxx in one project without much problem, however, I then
> > > ported some of the code I had over into another MSVC project and
> > > again tried to integrate log4cxx and am getting a couple of errors
> > > that are stumping me:
> > >
> > > Linking...
> > >    Creating library .\Release/Camera.lib and object .\Release/
> > > Camera.exp
> > > Camera.obj : error LNK2019: unresolved external symbol "public:
> > > static class log4cxx::helpers::ObjectPtrT<class log4cxx::Level>
> > > const & __stdcall log4cxx::Level::getInfo(void)" (?
> > > getInfo@Level@log4cxx@@SGABV?
> > > $ObjectPtrT@VLevel@log4cxx@@@helpers@2@XZ) referenced in function
> > > "int __stdcall convert(unsigned char *,int &,int &)" (?
> > > convert@@YGHPAEAAH1@Z)
> > > Camera.obj : error LNK2019: unresolved external symbol "public:
> > > static class log4cxx::helpers::ObjectPtrT<class log4cxx::Logger>
> > > __stdcall log4cxx::Logger::getLogger(char const * const)" (?
> > > getLogger@Logger@log4cxx@@SG?AV?
> > > $ObjectPtrT@VLogger@log4cxx@@@helpers@2@QBD@Z) referenced in
> > > function "void __cdecl `dynamic initializer for 'logger''(void)" (??
> > > __Elogger@@YAXXZ)
> > > ..\Bin\Camera.ax : fatal error LNK1120: 2 unresolved externals
> > >
> > > I built the log4cxx.lib both statically and dynamically and the
> > > above output is when I use the shared lib, I’ve also added the Pre-
> > > processor directive LOG4CXX_STATIC.
> > >
> > > I’ve done everything I can think of to get this right and this
> > > mailing list is my last resort ☺  I’d hate to waste your time.
> > >
> > >
> > >
> > >
> > >
> > > Eric Eborn,
> > > Software Engineer
> > > 801-545-5449
> > > eric.d.eborn@lmco.com
> > >
> > >
> >
> >
> > You should only set LOG4CXX_STATIC when you are linking against a
> > static log4cxx library.  Your message suggests that you set and tried
> > to link against a shared library which I would guess would result in
> > the types of messages that you see (I'd expect a declspec(import) to
> > show up in the method signature if LOG4CXX_STATIC was not set).  Could
> > you confirm that your LOG4CXX_STATIC setting is consistent with the
> > type of log4cxx library that you are linking against?

Mime
View raw message