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).
>
>