链接器工具警告 LNK4222

不应为导出的符号“symbol”分配序号

以下符号不应按序号导出:

  • DllCanUnloadNow

  • DllGetClassObject

  • DllGetClassFactoryFromClassString

  • DllInstall

  • DllRegisterServer

  • DllRegisterServerEx

  • DllUnregisterServer

这些函数始终使用 GetProcAddress 按名称定位。 链接器警告这种导出是因为可能会导致更大的图像。 如果序号导出的范围较大且导出相对较少,就可能会出现这种情况。 例如,

EXPORTS
   DllGetClassObject   @1
   MyOtherAPI      @100

将需要导出地址表中的 100 个插槽,其中 98 个(2-99)只是填充。 另一方面,

EXPORTS
   DllGetClassObject
   MyOtherAPI      @100

需要 2 个槽。 (请注意,也可以使用 /EXPORT 链接器选项进行导出。)