1752590 Members
2914 Online
108788 Solutions
New Discussion юеВ

Re: C++ LINK Issue

 
SOLVED
Go to solution

C++ LINK Issue

Upgrade from DEC C++ V5.3-005 to HP C++ V7.3-009 getting undefined symbols on code developed, not HP C++. On the surface the old system to new system looks similar. Upgraded OS revision as well. 6.2 to 8.3 OpenVMS.

Why?
Hints where to look?
Changes in CXXLINK causing?
Demangling/Mangling?
11 REPLIES 11
Steven Schweda
Honored Contributor

Re: C++ LINK Issue

> Hints where to look?

First, a VMS forum would be a better place
than this HP-UX forum.

http://forums.itrc.hp.com/service/forums/familyhome.do?familyId=288

An actual error message or two might be
useful, too. Did you re-compile everything
on the new OS with the new compiler?
John Gillings
Honored Contributor

Re: C++ LINK Issue

Vince,

You'll need to show your compile and link commands and exact text of any resulting error messages. In theory you should be able to link modules compiled with different versions of the compiler, but in practice, C++ mangling might be getting in the way.

It's a good habit to always compile with maximum listings - /LIST/SHOW=ALL or the language specific equivalent, then LINK/MAP/FULL/CROSS. That should help locate any problems.
A crucible of informative mistakes
Robert Gezelter
Honored Contributor

Re: C++ LINK Issue

Vince,

I agree with John. Should is the operative word. Full listings help. Crossing out the modules that resolve correctly will identify precisely what is happening.

I would start with demangling the unresolved symbols and checking if the declarations are correct, having seen problems similar to this in the past with various situations.

- Bob Gezelter, http://www.rlgsc.com

Re: C++ LINK Issue

$ CXXLINK /log /TRACE/DEBUG/NOMAP/EXEC=exe_tools:SDDVIEW.EXE sys$share:libcxxstd/INCL=CXXL_STD_INIT, here:sddview.opt/opt, SDDVIEW.OBJ, SDDVIEW_SMG.OBJ, UTL_SYSF_ITERATE.OBJ, RTNSDFI_UTIL.OBJ
%CXXLNK-I-LNKLIB_NAME, LNK$LIBRARY_3 defined as follows:

$ DEFINE LNK$LIBRARY_3 SYS$LIBRARY:LIBCXXSTD
%CXXLNK-I-LNKLIB_NAME, LNK$LIBRARY_2 defined as follows:

$ DEFINE LNK$LIBRARY_2 MILL_SHRLIB
%CXXLNK-I-LNKLIB_NAME, LNK$LIBRARY_1 defined as follows:

$ DEFINE LNK$LIBRARY_1 MILL_GPT4000LIB
%CXXLNK-I-LNKLIB_NAME, LNK$LIBRARY defined as follows:

$ DEFINE LNK$LIBRARY MILL_SDDLIB
%CXXLNK-I-LINKCOM, Link command:

link /TRACE/DEBUG/NOMAP/EXEC=EXE_TOOLS:SDDVIEW.EXE SYS$SHARE:LIBCXXSTD/INCL=CXXL_STD_INIT,HERE:SDDVIEW.OPT/OPT,SDDVIEW.OBJ,SDDVIEW_SMG.OBJ,UTL_SYSF_ITERATE.OBJ,RTNSDFI_UTIL.OBJ /NOEXEC/NOMAP/NOCROS/NOFULL/NOBRIE/NODEBU/INFORM

%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXX$ADDRRRSXNQ13STD41BSC0KL9U2H.obj
%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXX$DSPLYHADRXNQ13STD41B3ES1J3I.obj
%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXX$UPDTDSPLYXNQ13STD41B34GGI49.obj
%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXXL$CTQ13STD42BSCFSTRAM11JGA8S.obj
%CXXLNK-I-ADDOPT, Adding SYS$DISK:[.CXX_REPOSITORY]CXXL$CTQ13STD42BSCFSTRAM11JGA8S.obj to linker options file
%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXXL$DTQ13STD42BSCFSTRAM1KJFVB3.obj
%CXXLNK-I-ADDOPT, Adding SYS$DISK:[.CXX_REPOSITORY]CXXL$DTQ13STD42BSCFSTRAM1KJFVB3.obj to linker options file
%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXXL$GTLNQ13STD41BSCSTRA1ASRBQ4.obj
%CXXLNK-I-ADDOPT, Adding SYS$DISK:[.CXX_REPOSITORY]CXXL$GTLNQ13STD41BSCSTRA1ASRBQ4.obj to linker options file
%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXXL$LSQ13STD41BSCSTRAMC19219UE.obj
%CXXLNK-I-ADDOPT, Adding SYS$DISK:[.CXX_REPOSITORY]CXXL$LSQ13STD41BSCSTRAMC19219UE.obj to linker options file
%CXXLNK-I-OBJFILE, Looking for object file: SYS$DISK:[.CXX_REPOSITORY]CXXL$RSXNQ13STD41BSCSTRA0HUVKVV.obj




It seems like after the /inform in the OLD system, it would read ,SYS$LIBRARY:LIBCXXSTD.OLB/LIB
Craig A Berry
Honored Contributor
Solution

Re: C++ LINK Issue

5.3 to 7.3 is a big jump. I suggest reading the release notes carefully. IIRC there were big changes in C++ between the 5.x and 6.x eras. You can find the release notes here:

http://h71000.www7.hp.com/commercial/cplus/alpha_doc/rnv.html

Arch_Muthiah
Honored Contributor

Re: C++ LINK Issue

Vince,

Make sure you have demangler database. and include /Repository=disk:[..cxx_rep..],
you problem will be solved.

see $help cxx /repo and $help cxxlink/repo


Archie
Regards
Archie

Re: C++ LINK Issue

Now I get undefined symbol for the following:

%LINK-I-UDFSYM, std::basic_istream > &operator>>(std::basic_istream > &, String &)

Re: C++ LINK Issue

Thanks to all for providing hints. I realize my notes may not have been as inclusive or clear as possible.

SOLUTION: I found various hints in HP C++ User's Guide for OpenVMS Systems (June 2006). It took a lot of reading, and re-reading to isolate issues. Section 7.6.3 Upgrading from the Class Library String Package code was the most help.

I also used & searched the HP C++ Version 7.3 Release notes. I downloaded all the above in pdf for easier searching.

I now have resolved the unresolved symbol(s) and have a working executable.

Re: C++ LINK Issue

I resolved the unresolved symbols.