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)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@XZ) referenced in function "int __stdcall convert(unsigned char *,int &,int &)" (?convert@@[EMAIL PROTECTED]) 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)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@[EMAIL PROTECTED]) 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)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@XZ) referenced in function "int __stdcall convert(unsigned char *,int &,int &)" (?convert@@[EMAIL PROTECTED]) Filters.obj : error LNK2019: unresolved external symbol "public: static class log4cxx::helpers::ObjectPtrT<class log4cxx::Logger> __stdcall log4cxx::Logger::getLogger(char const * const)" ([EMAIL PROTECTED]@log4cxx@@[EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@[EMAIL PROTECTED]) referenced in function "void __cdecl `dynamic initializer for 'logger''(void)" (??__Elogger@@YAXXZ) apr-1.lib(sendrecv.obj) : error LNK2019: unresolved external symbol [EMAIL PROTECTED] referenced in function [EMAIL PROTECTED] Thanks for your input > -----Original Message----- > From: Curt Arnold [mailto:[EMAIL PROTECTED] > 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)" (? > > [EMAIL PROTECTED]@log4cxx@@SGABV? > > [EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@XZ) referenced in function > > "int __stdcall convert(unsigned char *,int &,int &)" (? > > convert@@[EMAIL PROTECTED]) > > Camera.obj : error LNK2019: unresolved external symbol "public: > > static class log4cxx::helpers::ObjectPtrT<class log4cxx::Logger> > > __stdcall log4cxx::Logger::getLogger(char const * const)" (? > > [EMAIL PROTECTED]@log4cxx@@SG?AV? > > [EMAIL PROTECTED]@log4cxx@@@[EMAIL PROTECTED]@[EMAIL PROTECTED]) 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 > > [EMAIL PROTECTED] > > > > > > > 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?
