Linkertoolwarnung LNK4222

Aktualisiert: November 2007

Fehlermeldung

Dem exportierten Symbol 'Symbol' sollte keine Ordinalzahl zugewiesen sein
exported symbol 'symbol' should not be assigned an ordinal

Die folgenden Symbole sollten nicht anhand der Ordinalzahl exportiert werden:

  • DllCanUnloadNow

  • DllGetClassObject

  • DllGetClassFactoryFromClassString

  • DllInstall

  • DllRegisterServer

  • DllRegisterServerEx

  • DllUnregisterServer

Diese Funktionen werden unter Verwendung von GetProcAddress immer anhand ihres Namens gesucht. In dieser Situation wird eine Linkerwarnung ausgegeben, da die Anwendung durch diesen Exporttyp vergrößert werden könnte. Dies ist z. B. der Fall, wenn der anhand der Ordinalzahl durchgeführte Export einen großen Bereich, aber relativ wenige Objekte umfasst. Beispiel:

EXPORTS
   DllGetClassObject   @1
   MyOtherAPI      @100

Die vorangehenden Codezeilen erfordern 100 Umsetzungsplätze in der Exportadressentabelle, wobei 98 davon (2-99) lediglich als Füllzeichen dienen. Die folgenden Zeilen

EXPORTS
   DllGetClassObject
   MyOtherAPI      @100

erfordern jedoch nur zwei Umsetzungsplätze. (Beachten Sie, dass auch mit der /EXPORT-Linkeroption exportiert werden kann.)