Linker Warning Error Messages 4000 - 4117

LNK4001
frame-relative fix-up, frame ignored near location in segment name
 
Explanation: A fix up occurred with a frame segment different from the target segment where either the frame or the target segment is not absolute. Such a fix-up is meaningless in the Windows environment, so the target segment is assumed for the frame segment. This error sometimes occurs if a 32-bit data item is referenced as if it were in a 16-bit segment or a 16-bit segment referenced as if it were in a 32-bit segment.

Action: Check that this is acceptable.
 
LNK4002
frame-relative absolute fix-up near location in segment name
 
Explanation: A fix up occurred with a frame segment different from the target segment where both frame and target segments are absolute. This fix up is processed using base-offset arithmetic, but the warning is issued because the fix up might not be valid in the Windows environment. This error sometimes occurs if a 32-bit data item is referenced as if it were in a 16-bit segment or a 16-bit segment referenced as if it were in a 32-bit segment.

Action: Check that this is acceptable.
 
LNK4003
unsupported option is ignored
 
Explanation: The option you specified is not supported

Action: Check spelling of option or do not specify the option.
 
LNK4005
32-bit fix-up in 16-bit record ignored at location in segment name
 
Explanation: ILINK encountered a 32-bit fix-up in a 16-bit record at the specified location. This might cause a problem with the executable file.

Action: The error might have been caused by the way the program was written or when it was compiled or assembled.
 
LNK4006
illegal 16-bit flat-relative offset fix-up at location in object name
 
Explanation: ILINK encountered an illegal 16-bit flat relative offset fix-up at the specified location. This might cause a problem with the executable file. This error sometimes occurs if a 32-bit data item is referenced as if it were in a 16-bit segment or a 16-bit segment referenced as if it were in a 32-bit segment.

Action: The error might have been caused by the way the program was written or when it was compiled or assembled.
 
LNK4007
illegal 16-bit flat-relative pointer fix-up at location in object name
 
Explanation: ILINK encountered an illegal 16-bit flat-relative pointer fix-up at the specified location. This error sometimes occurs if a 32-bit data item is referenced as if it were in a 16-bit segment or a 16-bit segment referenced as if it were in a 32-bit segment.

Action: The error might have been caused by the way the program was written or when it was compiled or assembled.
 
LNK4008
aliased fix-up to non-alias object near location in object name
 
Explanation: ILINK encountered an aliased fix-up to a non-alias object at the specified location. This error sometimes occurs if a 32-bit data item is referenced as if it were in a 16-bit segment or a 16-bit segment referenced as if it were in a 32-bit segment.

Action: The error might have been caused by the way the program was written or when it was compiled or assembled.
 
LNK4009
illegal target of flat-relative fix-up ignored at number in segment name
 
Explanation: ILINK encountered an illegal flat-relative fix-up at the specified location.

Action: The error might have been caused by the way the program was written or when it was compiled or assembled.
 
LNK4011
ALIGN is less than ALIGNADDR
Explanation: The file alignment value you specified is less than
the memory alignment value

Action: Choose a higher file alignment value.
LNK4017
unrecognized option option is ignored
Explanation: The option specified is not valid for ILINK.

Action: Specify a valid option or remove the unrecognized option and relink.
 
LNK4019
device driver cannot have a stack
 
Explanation: You are creating a device driver, and have specified a stack size for it with the option /STACK or the module statement STACKSIZE. Device drivers cannot have a stack.

Action: Remove the stack specification and relink.
 
LNK4020
size of code-segment name exceeds 65500
 
Explanation: The code segment indicated is larger than 65,500 bytes and might not be reliable.

Action: Break the segment into smaller segments and try again.
 
LNK4021
no stack segment
 
Explanation: The program does not contain a stack segment defined with the STACK combine type. Normally, every .EXE program should have a stack segment with the combine type specified as STACK.

Action: You can ignore this message if you have a specific reason for not defining a stack or for defining one without the STACK combine type.
 
LNK4022
name1, name2: groups overlap
 
Explanation: Two groups are defined in such a way that one starts in the middle of another. This can occur if you defined segments in a module definition file or assembly file and did not correctly order the segments by class.

Action: Edit the source file and reorder the segments in the group.
 
LNK4023
name (alias): export internal name conflict
 
Explanation: An exported name, or its associated internal name, conflicts with an already defined public symbol.

Action: Edit the source file using new names.
 
LNK4024
name: multiple definitions for export name
 
Explanation: The module named has been exported more than once with different internal names. All internal names except the first one are ignored.

Action: Edit the source file using new names.
 
LNK4025
modname impname (intname): import internal name conflict
 
Explanation: An imported name, or its associated internal name, is also defined as an exported name. The import name is ignored. The conflict could come from a definition in either the module definition file or an object file.

Action: Edit the source file or module definition file using new names.
 
 
LNK4027
name: multiple definitions for import internal name
 
Explanation: An imported name, or its associated internal name, is imported more than once. The imported name is ignored after the first mention.

Action: Check that the name has been defined correctly.
 
LNK4028
name: segment already defined
 
Explanation: A segment is defined more than once with the same name in the module definition file. Segments must have unique names for ILINK. All definitions with the same name are ignored after the first mention.

Action: Check that the segment has been defined correctly.
 
LNK4029
name: DGROUP segment converted to type data
 
Explanation: A segment that is a member of DGROUP has been defined as type CODE in a module definition file or object file. This probably happened because a CLASS keyword in a SEGMENTS statement was not given.

Action: Check the module definition file syntax.
 
LNK4030
name: segment attributes changed to conform with automatic data segment
 
Explanation: The segment named is defined in DGROUP, but the shared attribute is in conflict with the instance attribute.
Example: The shared attribute is NONSHARED and the instance attribute is SINGLE, or the shared attribute is SHARED and the instance attribute is MULTIPLE. The bad segment is forced to have the right shared attribute and the link continues.

Action: Check that the ILINK action is acceptable.
 
LNK4031
name: segment declared in more than one group
 
Explanation: A segment is declared to be a member of two different groups.

Action: Correct the source file and re-create the object files.
 
LNK4032
name: code-group size exceeds 65500 bytes
 
Explanation: The code group indicated is larger than 65500 bytes and therefore might not be reliable.

Action: Break the group into smaller groups or remove one or more segments and try again.
 
LNK4034
invalid argument in option
 
Explanation: You specified invalid argument(s) for that option.

Action: Modify your syntax.
 
LNK4036
no automatic data segment
Explanation: The program or dynamic link library did not define a group named DGROUP. This is recognized by ILINK as the automatic data segment.

Action: Edit the source file.
 
LNK4038
program has no starting address
Explanation: The program did not contain a starting address. Physical Device Drivers do not have program starting addresses, so this error can be ignored when linking Physical Device Drives.

Action: Recompile the program and try again.
 
LNK4039
device driver has a starting address
Explanation: There is a starting address specified for the device driver in one of the object files. Either a runtime function was specified that set a starting address, or the object module was built from assembler, and a starting address was specified on the end statement in the file.

Action: Remove any references to inappropriate runtime functions, or if the object module was built from assembler, remove the starting address from the end statement, and recompile and relink.
 
LNK4044
CODE segment :name in DATA group:name; assuming DATA
 
Explanation: A CODE statement in a module definition file was used to define default attributes for a DATA segment.

Action: Define a CODE statement and relink.
 
LNK4045
name of output file is name
Explanation: A dynamic link library file was created without specifying an extension. In such cases, ILINK supplies an extension of .DLL. This is to warn you in case you expected an .EXE file to be generated

Action: No action.
 
LNK4046
DATA segment: name in CODE group: name; assuming CODE
Explanation: A DATA statement in a module definition file was used to define default attributes for a CODE segment.

Action: Define a DATA statement and relink.
 
LNK4048
ignoring non-zero heap size
Explanation: The module definition file does not contain a HEAPSIZE statement.

Action: Edit the file and relink.
 
LNK4049
ignoring non-zero stack size
 
Explanation: The module definition file does not contain a STACKSIZE statement.

Action: Edit the file and relink.
 
LNK4051
OPTVFUNC has been disabled
Explanation: option OPTVFUNC (not active in this version of IBM C and C++ Compilers) has been disabled. The linker encountered a C++ object that does not contain smart method linking information. For the linker to perform the optimization all C++ objects must contain smart method linking information that are used in the link step.

Action: Recompile the source for this object with the current version of the compiler.
LNK4052
OPTFUNC has been disabled.

Explanation: The linker disabled OPTVFUNC and as a result also disabled OPTFUNC.

Action: Remove the linker option OPTVFUNC (not active in this version of IBM C and C++ Compilers) from the link step.
 
 
LNK4067
changing default resolution for weak external name from oldname to newname
 
Explanation: ILINK encountered a redefinition of a default resolution and is changing it to the value indicated.

Action: If the change is OK, no action is required; otherwise, fix the module definition file and try again.
 
LNK4068
ignoring stack size greater than 64K
 
Explanation: ILINK encountered a stack greater than 64K or zero and is assuming a stack size of 65,534.

Action: Edit the file and relink.
 
LNK4069
filename truncated to name
 
Explanation: ILINK encountered a file name greater than 256 bytes (including terminating null) and truncated it to the size indicated.

Action: Edit the file and relink.
 
LNK4070
pwords only required with I/O privilege; reset to zero for exportName
 
Explanation: You have specified the size of an exported function's parameters. This size information is only necessary for functions that have I/O privilege. The size information has been removed.

Action: Remove the size information from the .DEF file and relink. The size is defined in the pwords parameter of the EXPORT keyword.
 
LNK4071
application type not specified; assuming name
 
Explanation: An application type of WINDOWAPI, WINDOWCOMPAT, NOTWINDOWCOMPAT, or PRIVATE was not specified. ILINK is assuming the application type indicated.

Action: Edit the file and relink.
 
LNK4072
changing application type from oldname to newname
Explanation: The application type specified with /PMTYPE is different from that in .DEF file. ILINK is using the application type indicated.

Action: Edit the file and relink.
 
LNK4073
name: 32-bit aliased data segment size exceeds 64K
Explanation: The segment indicated is greater than 64K in length and is a 32-bit aliased data segment

Action: If this is expected, do nothing; if not, break into smaller segments.
 
LNK4074
attribute conflict for segment name; ignoring attribute type
 
Explanation: The segment indicated for the .DEF file is defined with conflicting characteristics. ILINK is ignoring the attribute indicated.

Action: Edit the file and relink.
 
LNK4075
object type conflict - assuming name
 
Explanation: The .DEF files specified conflicting attributes for an object; only one of the following attributes are allowed: RESIDENT, NONPERMANENT, PERMANENT, CONTIGUOUS, or DYNAMIC. ILINK is assuming the attribute indicated.

Action: Edit the file and relink.
LNK4076
module name truncated in debug section to 255 characters

Explanation: The name of the specified module was truncated to 255 characters in the debug section.The debugger may not be able to find that module.

Action: Try giving that moodule a shorter name.
 
LNK4077
symbol name not defined; ordered allocation ignored
 
Explanation: While doing ordered allocation of COMDAT records, ILINK encountered an undefined COMDAT record; ordered allocation is determined from the .DEF file.

Action: Edit the file and relink.
LNK4078
entry point ignored, specified previously

Explanation: The entry point in this module was ignored because of a conflict with an entry point specified in a different module.

Action: Make sure all specified entry points are consistent.
 
LNK4079
symbol name already defined for ordered allocation; duplicate ignored
 
Explanation: While processing ORDER list in .DEF file, ILINK encountered a COMDAT record already defined for ordered allocation.

Action: Edit the file and relink.
 
LNK4080
changing substitute name for alias name from name to name
 
Explanation: ILINK encountered an alias redefiniton and is changing it to the values indicated.

Action: If this is OK, no action is required. Otherwise, edit the file and relink.
 
LNK4082
name ignored for module with 16-bit starting address
 
Explanation: ILINK encountered a DLL module with a 16-bit entry point requesting termination. Only modules with 32-bit entry points can specify DLL termination.

Action: Remove the termination request from the module definition file.
 
LNK4083
invalid base address specification; assuming number
 
Explanation: The base address specified with the /BASE option or in the module definition file is illegal, and ILINK is assuming the given value.

Action: Change the base address if necessary; otherwise, ignore the message.
 
LNK4084
module name truncated to string
 
Explanation: The module name was truncated to the number of characters indicated.

Action: If this action is satisfactory, no action is required. Otherwise, edit the module definition file and shorten the name.
 
LNK4085
name (alias alias name): forwarder entry created for imported export
 
Explanation: ILINK created a forwarder entry within the entry table for the named export.

Action: If this action is satisfactory, no action is required.
LNK4086
invalid packing algorithm

Explanation: You specified the /EXEPACK linker option, and gave it a parameter other than 1 or 2. You can specify one of /EXEPACK, /EXEPACK:1, or /EXEPACK:2.

Action: Relink, specifying the /EXEPACK option correctly.
 
LNK4087
The obsolete keyword HEAPSIZE is ignored
Explanation: The HEAPSIZE instruction is obsolete in the module definition file in
the 32-bit environment and is ignored.

Action: Remove the HEAPSIZE statement from the .DEF file.
LNK4088
invalid read-only base specification
 
LNK4089
ROBASE not allowed without BASE; ignored
 
Explanation: ROBASE is not supported by Windows NT. On OS/2, /ROBASE cannot be specified unless /BASE has been set first.

Action: If you are using Windows, remove the /ROBASE option. If you are using OS/2, set the /BASE option.
 
LNK4090
cannot load DLL name
 
Explanation: ILINK detected an error while trying to load a dynamic link library. This DLL was specified in an object file, and is used by ILINK to demangle a compiler generated mangled name into a function prototype when printing an error message. Error messages will not be demangled for this object file.

Action: Make sure the appropriate identifier manipulator DLL is in the LIBPATH.
 
LNK4091
cannot locate procedure in DLL name
 
Explanation: ILINK detected an error while trying to load a procedure from a dynamic link library. This DLL was specified in an object file, and is used by ILINK to demangle a compiler generated mangled name into a function prototype when printing an error message. Error messages will not be demangled for this object file.

Action: Make sure the appropriate identifier manipulator DLL is in the LIBPATH.
 
LNK4093
cannot initialize identifier manipulation DLL name
 
Explanation: ILINK detected an error while trying to initialize an identifier manipulator dynamic link library. This DLL was specified in an object file, and is used by ILINK to demangle a compiler generated mangled name into a function prototype when printing an error message. Error messages will not be demangled for this object file.

Action: Make sure the appropriate identifier manipulator DLL is in the LIBPATH.
 
LNK4094
increasing stack size from number to number

Explanation: The stack size specified by either

  1. size of a segment with combine type stack
  2. /STACKSIZE statement in the .DEF file
  3. /STACK command line option

will cause a system error if the program is executed on an Windows 2.x system. ILINK has changed the stacksize to a larger value to preserve compatibility.

Action: No action required, ILINK has corrected the problem. To eliminate the warning message, restart ILINK and specify the new stack size.

LNK4095
debug packing failed; debug information may be incomplete
 
Explanation: The linker was unable to pack the debug information with the option /DBGPACK. The object files may not contain complete debugging information.

Action: Recompile object files with /Ti and /O- to ensure complete debugging information is included. If problem persists, link object files without /DBGPACK.
 
LNK4096
debug information in module cannot be packed

Explanation: The debug information could not be packed for one of the following reasons:

Action: Recompile the source files for the object module, with /Ti set to produce debugging information.

 
LNK4099
Obsolete TYPDEF record is ignored
 
Explanation: The object module contains the OMF record type TYPDEF. This record type is not supported, and the linker ignores any information in it. COMENT records should be used instead.

Action: If source files for the object module are available, recompile with IBM C and C++ Compilers, and relink.
 
 
LNK4101
plus ignored on command line or in response file
Explanation: You used a plus on the command line or in a response file. In ILINK, plus signs were used to separate object files passed to the linker. In ILINK, object files are recognized by the file extension .OBJ and the plus signs are not necessary.

Action: Change your invocation to use the ILINK syntax, or specify /NOFREE to use LINK385 compatible syntax that will recognize the plus sign.
 
LNK4102
semi-colon ignored on command line or in response file
 
Explanation: You used a semi-colon on the command line or in a response file. In ILINK, semi-colons signs were used to end the command line or response file, and accept default responses for all remaining prompts. In ILINK, you do not need to specify the semi-colon. Any parameters not provided are automatically replaced with defaults.

Action: Remove the semi-colon, or specify /NOFREE to use LINK385 compatible syntax that will recognize the semi-colon.
 
LNK4103
Map filename same as executable filename x. Map file will not be created
 
Explanation: You specified a map file name that is identical to the name of the executable. ILINK will not generate a map file.

Action: To also produce a map file, give the map file a different name.
 
LNK4110
x is an empty library
 
Explanation: This library is empty.

Action: Do not link in that library
 
LNK4111
x has no public symbols
 
Explanation: This library has no public symbols defined.

Action: Do not link in that library
 
LNK4112
x contains modules that are not in its dictionary
 
Explanation: This library contains modules that are not in its dictionary.
Action: Rebuild that library
LNK4114
name has been truncated to number1 bytes (name1)

Explanation: A name was encountered that requires more bytes of storage than the linker permits. The name was shortened to the first  number1 bytes.

Action: Make the name of the symbol shorter.
LNK4115
DLL's base name longer than 8 characters

Explanation: The base name of the dll is longer than 8 characters. While the linker will generate its output file with the specified name, it is not valid under OS/2 and therefore may not run.

Action: Make the name shorter.
LNK4116
More than one resource file specified
 
Explanation: You may have only one .RES file per executable or .DLL.

LNK4117
ALLIGNADDR must be equal to 64k for EXE. The specified value was ignored.
 
Explanation: The OS/2 loader does not support a segment alignment value other than 64k for executables. You can specify a different value when building a DLL VDD or PDD.



Linker Error Messages