次の方法で共有


リンカー ツールの警告 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 でもエクスポートできますので、注意してください。)