--- In [email protected], "Shanthi Shetty" <[EMAIL PROTECTED]> wrote: > > Hi All, > > In one of my applications while running the makefile > it gives error saying, > > *Undefined first referenced* > * symbol in file* > *__RT_CLASS::__vtbl IndicateDB.o* > *[Hint: try checking whether the first non-inlined, non-pure virtual > function of class __RT_CLASS is defined] > * * > ld: fatal: Symbol referencing errors. No output written to > IndicateComm* > > **** Error code 1* > *make: Fatal error: Command failed for target `IndicateComm'* > > > What is _RT_CLASS::vtbl here( I assume it must be > runtime class::vtable). > The application is in C but there may be some dependency > related C++. Its being executed in Solaris.
Shanthi, this sounds as if you were trying to link one or more object files generated with a different C++ compiler than the one you are using by now. Or at least a different version. For example, from Forte 4.0 to Forte 4.2 Sun has changed the name mangling scheme for C++ method names; this means that you cannot link C++ code compiled with Forte 4.0 with C++ code compiled with 4.2. The same applies if you try to link gcc-compiled C++ code with Forte-compiled code; gcc and Forte use different name mangling schemes as well. How to remedy? Locate the C++ code that you are linking, and either recompile it yourself with your current compiler, or have it recompiled by the original vendor with your current compiler. There is no other way; until this very day I have never heard of any linker which can link such codes from different compilers / compiler versions. Regards, Nico
