### 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:

  - The object module contains no debug information to pack
  - There were more than 64K of common types to pack, and the packing could not continue
  - The object module was produced by an older version of the compiler
  - The object module was produced by a different compiler

> 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