You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4cxx-user@logging.apache.org by Curt Arnold <ca...@apache.org> on 2005/03/16 01:44:54 UTC
Fwd: Build namespace issues
Begin forwarded message:
> From: Curt Arnold <ca...@apache.org>
> Date: March 15, 2005 4:15:01 PM CST
> To: Log4J Users List <lo...@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).
>
>