Linker Tools Errors and War ...


Visual C++ Concepts: Building a C/C++ Program
Linker Tools Warning LNK4222

exported symbol 'symbol' should not be assigned an ordinal

The following symbols should not be exported by ordinal:

  • DllCanUnloadNow
  • DllGetClassObject
  • DllGetClassFactoryFromClassString
  • DllInstall
  • DllRegisterServer
  • DllRegisterServerEx
  • DllUnregisterServer

These functions are always located by name, using GetProcAddress. The linker warns about this kind of export is because it could result in a larger image. This could happen if the range of your ordinal exports is large with relatively few exports. For example,

EXPORTS
   DllGetClassObject   @1
   MyOtherAPI      @100

will require 100 slots in the export address table with 98 of them (2-99) just filler. On the other hand,

EXPORTS
   DllGetClassObject
   MyOtherAPI      @100

will require two slots. (Be aware that you can also export with the /EXPORT linker option.)

Page view tracker