[omniORB] Undefined symbol "__pure_virtual"

Peter van Heusden pvh@egenetics.com
Thu, 27 Jul 2000 11:25:22 +0200 (SAST)


On Wed, 26 Jul 2000, Lutz Bichler wrote:

> Hi, 
> 
> i had the same problem and "solved" it by adding "-lgcc_pic" after $(LIBS) 
> to the "Make rules for FreeBSD" in src/tools/omniidl/cxx/dir.mk. After 
> deleting the _omniidlmodule.* files in lib/i586_freebsd_4.0 and recompiling 
> it seems to work fine. 

Hi

Thanks for the tip. I discovered that -lgcc also works - the symbol is
defined in libgcc, libgcc_pic, libgcc_p, libgcc_r and
libgcc_r_p. Apparently the symbol is used in some way by the compiler
internals when implementing pure virtual methods. (I found a message
describing a virtual function table having an entry of __pure_virtual -
maybe __pure_virtual is a placeholder symbol which is used till the actual
method to be called is resolved. I don't know enough about C++ to be
certain)

So, cool! I'll see about making a port for omniORB 3.

Peter
P.S. Google is a great search engine! (http://www.google.com)
--
Peter van Heusden <pvh@egenetics.com>
NOTE: I do not speak for my employer, Electric Genetics
"Criticism has torn up the imaginary flowers from the chain not so that man 
shall wear the unadorned, bleak chain but so that he will shake off the chain 
and pluck the living flower." - Karl Marx, 1844