リンカ ツール エラー LNK1306

DLL エントリ ポイント関数をマネージドにすることはできません。ネイティブにコンパイルしてください

DllMain を MSIL にコンパイルできません。ネイティブにコンパイルする必要があります。

この問題を解決するには、

  • /clr を指定せずにエントリ ポイントを含むファイルをコンパイルします。

  • #pragma unmanaged セクションにエントリ ポイントを配置します。

詳細については、以下を参照してください:

次の例では LNK1306 が生成されます。

// LNK1306.cpp
// compile with: /clr /link /dll /entry:NewDllMain
// LNK1306 error expected
#include <windows.h>
int __stdcall NewDllMain( HINSTANCE h, ULONG ulReason, PVOID pvReserved ) {
   return 1;
}

この問題を解決するには、/clr オプションを使用してこのファイルをコンパイルしないようにするか、次の例に示すように、#pragma ディレクティブを使用してアンマネージ セクションにエントリ ポイント定義を配置します。

// LNK1306fix.cpp
// compile with: /clr /link /dll /entry:NewDllMain
#include <windows.h>
#pragma managed(push, off)
int __stdcall NewDllMain( HINSTANCE h, ULONG ulReason, PVOID pvReserved ) {
   return 1;
}
#pragma managed(pop)