Begin forwarded message:
From: Curt Arnold <[EMAIL PROTECTED]>
Date: March 15, 2005 4:15:01 PM CST
To: Log4J Users List <log4j-user@logging.apache.org>
Subject: Re: Build namespace issues
On Mar 15, 2005, at 3:31 PM, Ron Ohmer wrote:
I ran into a rather odd error when using SocketAppenders.
I have a wrapper that has worked fine, no warnings, nothing until I
added functionality for the SocketAppender..
Now I get what follows this.. Does anyone know the root of this
(Other than SocketAppender.cpp.. :-)) BTW, VS.NET 2k3 is the build
tool.
The problem is that pervasively throughout log4cxx (even the CVS
HEAD), you see a construct like:
class SocketImpl;
typedef helpers::ObjectPtrT<SocketImpl> SocketImplPtr;
When one of these smart-pointer templates is used in a publicly
exposed method on a exported class, you end up with an exported method
depending on a non-exported class. If the template expansion differs
in any way from the expansion when the library was build, bad things
will happen hence the warning.
What should be done is something like:
class SocketImpl;
class LOG4CXX_EXPORT SocketImplPtr : public
helpers::ObjectPtrT<SocketImpl> {
...
}
I'll log this as a bug and work on it as soon I finish my current task
(likely 24-48 hours away).