Sdílet prostřednictvím


Upozornění linkerů LNK4222

exportovaný symbol symbol 'symbol' by neměl být přiřazen ordinální

Následující symboly by neměly být exportovány pořadovým kódem:

  • DllCanUnloadNow

  • DllGetClassObject

  • DllGetClassFactoryFromClassString

  • DllInstall

  • DllRegisterServer

  • DllRegisterServerEx

  • DllUnregisterServer

Tyto funkce jsou vždy umístěny podle názvu pomocí .GetProcAddress Linker varuje o tomto typu exportu, protože by mohl vést k větší imagi. K tomu může dojít v případě, že rozsah pořadových exportů je velký s relativně malým počtem exportů. Příklad:

EXPORTS
   DllGetClassObject   @1
   MyOtherAPI      @100

bude vyžadovat 100 slotů v tabulce exportních adres s 98 z nich (2-99) jen filler. Na druhou stranu

EXPORTS
   DllGetClassObject
   MyOtherAPI      @100

bude vyžadovat dva sloty. (Mějte na paměti, že můžete exportovat také pomocí možnosti /EXPORT linker.)