After playing with the source a little longer, I found my
situation 180 degrees off of what I originally thought...
> -----Original Message-----
> From: Popick, Dan [SMTP:[EMAIL PROTECTED]]
>
> I'm trying to compile a module (in separate parts) with C++ code. I
> _had_ problems with _buitlin_delete missing which I dodged by making
> inline
> destructors (anyone know why this works!?)
>
This only worked in simple circumstances. When I tried
making a derived class, I had a lot of trouble getting the __builtin_delete
to go away. The only thing I found that would work was to make a virtual
void cleanup() in the base class and have the _non_ virtual inline
destructor call it. Dervied classes could override cleanup() without a
problem.
Making the base destructor virtual or out-of-line added that
symbol again (in the base class object file). This is somewhat ugly-- I get
a lot of warnings about non-virtual destructors. Putting a destructor in the
derived class would add __builtin_delete to the derived class object file.
I also found that pure abstract methods tend to generate
__pure_virtual. Replacing the "= 0;" with "{ }" fixed this.
> The problem I currently have is that a virtual table is missing. I
> have one unit that declares a base class with virtual functions, another
> which derives from it and a third which instantiates a global copy of the
> derived class. None of these modules contain the virtual table for the
> base
> class. I keep missing the sym __vt_6MyObj (MyObj Virtual Table).
>
This was actually a problem with my (accidentally) not
implementing a method that I defined. Interesting side effect...
I'm also missing memcpy & memset.
-E showed me including <string.h> instead of
<linux/string.h>.
Anyway, these are the dragons that I'm attempting to slay.
If you of anything more effective (e.g. sharper swords, poison, ACME
catalogs) I'd be tickled pink to hear about it. I'd love to find a way
around these pesky syntactic details and just code "normally".
-D
application/ms-tnef