リンカ ツール エラー LNK1306Linker Tools Error LNK1306

DLL エントリ ポイント関数を管理することはできません。ネイティブにコンパイルされます。DLL entry point function cannot be managed; compile to native

DllMain MSIL にコンパイルすることはできませんこれは、ネイティブにコンパイルする必要があります。DllMain cannot be compiled to MSIL; it must be compiled to native.

この問題を解決するにはTo resolve this issue,

  • エントリ ポイントなしを含むファイルをコンパイル /clrします。Compile the file that contains the entry point without /clr.

  • エントリ ポイントを#pragma unmanagedセクション。Put the entry point in a #pragma unmanaged section.

詳細については次を参照してください:For more information, see:

Example

次の例では、LNK1306 が生成されます。The following sample generates 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この例で示すように、非管理対象のセクションでは、エントリ ポイントの定義を配置するディレクティブ。To fix this issue, do not use the /clr option to compile this file, or use a #pragma directive to put the entry point definition in an unmanaged section as shown in this example:

// 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)