PRB: Unresolved External Error Compiling for MOVE EnvironmentID: Q92869
|
When an application implements the MOVE overlay scheme by defining MOVE_ENV, compiling the MOVEINIT.C file, and linking MOVEINIT.OBJ with the other files of the application, linking fails with the following error message:
L2029: '__movesegenv' unresolved external
The default medium memory model and large memory model libraries do not support MOVE_ENV.
Link the application with the MOVETR.LIB file.
The MOVE overlay scheme supports using environment variables to specify the
size of the overlay heap and overlay caches at run time. The MOVEAPI.TXT
file distributed with Microsoft C/C++ version 7.0 and the MOVEAPI.WRI file
distributed with Microsoft C/C++, versions 8.0 and 8.00c detail the
required procedure.
To implement the MOVE overlay scheme, define MOVE_ENV and compile the
MOVEINIT.C file. Link the MOVEINIT.OBJ file with MOVETR.LIB and the other
files of your application. The text below lists the commands to compile and
link the files. Note that the /Gs switch is used to eliminate calls to the
stack-checking routine because the initialization in MOVEINIT occurs before
the C run-time library initialization occurs.
cl /c /AM /DMOVE_ENV /Gs moveinit.c
link <objs> moveinit.obj,,,movetr.lib,project.def
When MOVE_ENV is defined, MOVEAPI.H declares the following variable:
extern unsigned short __far __cdecl _movesegenv;
To avoid receiving an unresolved external error, the application must
define the _movesegenv symbol in moveinit() to contain the segment
address of the environment. The following three steps define
_movesegenv:
unsigned short __far _movesegenv;
#define OffsetEnv 2Ch
#else /* MOVE_ENV */
Make the following two modifications to the start of the moveinit()
function in the second part of the file:
_asm {
MOV ah, 51h ; Get PSP
INT 21h
}
_asm {
MOV es, bx ; Contains seg of PSP
MOV ax, WORD PTR es:OffsetEnv ; Get seg of environment
MOV bx, SEG _movesegenv ; Get seg of _movesegenv
MOV es, bx ; since it is far
MOV es:_movesegenv, ax ; Store seg in _movesegenv
}
Additional query words: 7.00 8.00 8.00c 1.00 1.50 Visual
Keywords : kb16bitonly
Version :
Platform :
Issue type :
Last Reviewed: July 21, 1999