![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: I always get 2 undefined symbol errors from the linker for the following code: The Answer is : As the errors involve a failure of the linker to locate and resolve the opendir and closedir calls, the the Wizard would suggest upgrading to OpenVMS V7.1 -- which includes a run-time library shareable image with support for a number of routines including these directory calls -- or using the backport library available with DEC C V5.6 and later releases. (These and various other C library calls were first added in OpenVMS V7.0. Please see the new features manuals for OpenVMS V7.0 and V7.1 for details.) In other cases of unresolved symbols with code compiled using DEC C, the appropriate /PREFIX keyword can also come into play -- this qualifier adds a "decc$" prefix to external symbols, allowing these to be resolved by the linker during a standard library search. (The Wizard regularly sees code compiled with /PREFIX=ALL.) Contrary to what some folks might assume, the C and other language run-time libraries ship on the OpenVMS distribution kit, and not with the compiler kit. This allows applications written in the supported languages to be used on any OpenVMS system, regardless of the presence of the compiler. And this means that new library versions, new library routines, and new features also ship with OpenVMS releases, and not with the compiler.
|