Title: | C++ |
Notice: | Read 1.* and use keywords (e.g. SHOW KEY/FULL KIT_CXX_VAX_VMS) |
Moderator: | DECCXX::AMARTIN |
Created: | Fri Nov 06 1987 |
Last Modified: | Thu Jun 05 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3604 |
Total number of notes: | 18242 |
What is CXXL$LSXN7OSTRAMNK10SMNP109JBEU ? The question arises because of the following program. (Open VMS Alpha 6.2, DEC C++ V5.5-017) Wolfgang $ CXX EXA05_MAIN $ CXXLINK EXA05_MAIN %LINK-W-NUDFSYMS, 1 undefined symbol: %LINK-I-UDFSYM, CXXL$LSXN7OSTRAMNK10SMNP109JBEU %LINK-W-USEUNDEF, undefined symbol CXXL$LSXN7OSTRAMNK10SMNP109JBEU referenced in psect $LINK$ offset %X00000060 in module EXA05___C file SYS$USER:[WERNER.TMP.CXX_REPOSITORY]EXA05___C.OBJ;1 $ TYPE EXA05_MAIN.CXX #include <iostream.h> #include <iomanip.h> #include "exa05.h" int main() { exa05<char> ec('a'); ec.ToStream(cout); return 0; } $ TYPE EXA05.H template <class T> class exa05<T> { private: T m_value; public: exa05<T>(T value); void ToStream(ostream& os) const; }; $ TYPE EXA05.CXX template <class T> exa05<T>::exa05(T value) { m_value = value; } template <class T> void exa05<T>::ToStream(ostream& os) const { os << setw(6); // no linker warning error if replaced with 'os.width(6);' os << m_value; }
T.R | Title | User | Personal Name | Date | Lines |
---|---|---|---|---|---|
3503.1 | DECC::FOLTAN | Wed Mar 19 1997 09:47 | 18 | ||
Yes, I am able to reproduce your problem. $ cxx/version exa05_main.cxx DEC C++ V5.5-017 on OpenVMS Alpha V6.2-1H3 $ cxx exa05_main.cxx $ cxxlink exa05_main.obj %LINK-W-NUDFSYMS, 1 undefined symbol: %LINK-I-UDFSYM, CXXL$LSXN7OSTRAMNK10SMNP109JBEU %LINK-W-USEUNDEF, undefined symbol CXXL$LSXN7OSTRAMNK10SMNP109JBEU referenced in psect $LINK$ offset %X00000060 in module EXA05___C file GEM_C$:[FOLTAN.WORK.CXX_REPOSITORY]EXA05___C.OB J;1 I suspect the sybol is coming from the class library. I will have someone take a look. Lois | |||||
3503.2 | shows bug in automatic instantiation, will be fixed in next release of compiler (V5.6) | DECC::J_WARD | Wed Mar 19 1997 10:03 | 23 | |
This is the unresolved symbol: Unresolved: operator <<(ostream&, const smanip_int&) The problem you have linking is due to a bug in the automatic instantiation mechanism that will be fixed in V5.6 of the compiler (it corresponds to our internal bug database number CXXC_BUGS 3926). It happens because this operator is declared as a friend function in the iomanip header. For now, you can either: 1. use width() instead 2. use manual instantiation, i.e. add the following right before main() in exa05_main.cxx: #ifdef __DECCXX // workaround V5.5 auto instantiation bug #include "exa05.cxx" #pragma define_template exa05<char> #endif | |||||
3503.3 | Thanx for the FAST answers | MUNICH::WWERNER | When in doubt, do as the INTs do | Wed Mar 19 1997 10:12 | 0 |