PRIMP9108001: IMPLIB Creates Sequential Ordinals

ID Number: Q75245

1.10 | 1.10

MS-DOS | OS/2

buglist1.10

Summary:

PROBLEM ID: IMP9108001

SYMPTOMS

With the Microsoft IMPLIB utility version 1.1, calls into a DLL

fail to resolve to the correct function entry point when code or

data is added to the DLL at a later date.

CAUSE

When a DLL is written, function entry points can use the _export

keyword instead of being defined in the .DEF file. The DLL can then

be used as the input file for IMPLIB and an import library will be

created that can be used to link with the application. This was a

feature added with IMPLIB version 1.1 that shipped with Microsoft

C version 6.0.

The problem is that IMPLIB creates sequential ordinal values for

the functions in the order they are listed in the module. As a

result, if the order in which functions are defined is changed (for

example, adding another function at the beginning), all the ordinal

numbers that follow will also change. If the .EXE is not relinked

with the new import library, the ordinals in the .EXE will be

incorrect and the behavior of the application will be undefined.

STATUS

Currently the only workaround is to either relink your applications

whenever you modify your DLLs or use a .DEF file as input to

IMPLIB.

Microsoft has confirmed this to be a problem in IMPLIB version

1.1. We are researching this problem and will post new

information here as it becomes available.