This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
I'm building a c6000 library containing a base c++ class ValueObjectBase from which various other classes inherit, and I can instanciate them in an application using the library without problem. But when I inherit from this base class with a template class, I get a strange unresolved symbol during link :
___T_Q3_4stbl7CanOpen15ValueObjectBase ./src/run_main.obj
error #10234-D: unresolved symbols remain
what is this ___T_ symbol ?
when I look at the symbols defined in the library I find all the expected symbols, including virtual table/ctor/dtor, but not this ___T_ symbol...
==> symbol defined: '___vtbl__Q3_4stbl7CanOpen15ValueObjectBase'
==> symbol defined: '_accessRights__Q3_4stbl7CanOpen15ValueObjectBaseFRCUs'
==> symbol defined: '_descriptionDataLength__Q3_4stbl7CanOpen15ValueObjectBaseFv'
==> symbol defined: '_subindexIsValid__Q3_4stbl7CanOpen15ValueObjectBaseSFUc'
==> symbol defined: '_entryDescriptionToBuffer__Q3_4stbl7CanOpen15ValueObjectBaseFUcT1PvUi'
==> symbol defined: '_entryDescriptionDataLength__Q3_4stbl7CanOpen15ValueObjectBaseFUcT1'
==> symbol defined: '_checkAccessRights__Q3_4stbl7CanOpen15ValueObjectBaseFUcUs'
==> symbol defined: '_description__Q3_4stbl7CanOpen15ValueObjectBaseFPCc'
==> symbol defined: '_readFromBuffer__Q3_4stbl7CanOpen15ValueObjectBaseFUcPvUi'
==> symbol defined: '_descriptionToBuffer__Q3_4stbl7CanOpen15ValueObjectBaseFPvUi'
==> symbol defined: '_writeToBuffer__Q3_4stbl7CanOpen15ValueObjectBaseFUcPvUi'
==> symbol defined: '_objectBitLength__Q3_4stbl7CanOpen15ValueObjectBaseFv'
==> symbol defined: '___dt__Q3_4stbl7CanOpen15ValueObjectBaseFv'
==> symbol defined: '_dataType__Q3_4stbl7CanOpen15ValueObjectBaseFRCUs'
==> symbol defined: '_maxSubindex__Q3_4stbl7CanOpen15ValueObjectBaseFv'
==> symbol defined: '_index__Q3_4stbl7CanOpen15ValueObjectBaseFUs'
==> symbol defined: '_dataLength__Q3_4stbl7CanOpen15ValueObjectBaseFUc'
==> symbol defined: '___ct__Q3_4stbl7CanOpen15ValueObjectBaseFPQ3_4stbl3Log6LoggerUs'
what does this symbol refer to and how can I export it from my library ?
thanks in advance
I'm sorry, I do not recognize that mangling. Please generate the assembly file (--keep_asm compiler option) and look for that symbol in the file. Looking at the generated assembly code will tell us whether the compiler is using it as a variable, a function, or some other entity. If you could post a snippet of code which refers to the symbol, I might have a better chance of guessing what it is.
__T is usually the prefix for a C++ runtime typeinfo.
The format for runtime type info mangled name is like this:
__T_type-encoding
thanks Wei Zhao, that's it exactly.
my application has to use RTTI in another unrelated part of the code, and the library didn't need it and so didn't have it enabled.
now that I enabled the RTTI in the library I can see all the ___T_ symbols exported in the archive...
thanks again !