From: Daniel Stone (no email)
Date: Tue Sep 23 2003 - 17:16:32 EDT
On Tue, Sep 23, 2003 at 02:16:13PM +0200, Jens Thoms Toerring wrote:
> I am trying to compile the CVS version of aspseek on IRIX with
> gcc 3.3.1 (when using the IRIX compiler the make process stops with
> some linker problems that I wasn't able to figure out, and, no, I
> can't use a different gcc version, sorry). My current problem is
> in class CPtr from ccom.h when compiling qparser.cpp. It compiles
> without problems on Linux with gcc 3.2 but with 3.3.1 it complains,
> error message is appended to the end of the mail.
> I have a feeling that this might be related to the 'IUnknown' stuff
> in "void Release()". I grepped through all the sources as well all
> headers I could find on both machines but 'IUnknown' doesn't exist
> anywhere. Interestingly, with gcc 3.2 one can replace 'IUnknown'
> with whatever one wants (e.g. 'Blablabla') and it still compiles.
> How it manages to figure out which Release() function is to be
> used isn't clear to me. The only thing I could find out about
> something called 'IUnknown' in C++ is some COM related stuff from
> M$. So, is there any way to get around this problem?
I encountered this problem and filed a bug upstream. It turns out that
gcc3.3's template parser is badly broken (surprise surprise), and thus
doesn't deal with the case where CWord1 is included in a CPtr, because
CWord1 is descended from a CPtr (I think, might be the other way
around). There's no easy way to work around this - the gcc people told
me to just wait for 3.4, because the parser's fixed there. :(
-- Daniel Stone <u.au> Developer, Trinity College, University of Melbourne