コンパイラの警告 (レベル 1) C4747

マネージド 'entrypoint' の呼び出し: マネージド コードは、DLL エントリポイントや、DLL エントリポイントから到達した呼び出しを含むローダー ロック下では実行できません

コンパイラは、MSIL にコンパイルされた (可能性のある) DLL エントリ ポイントを検出しました。 エントリ ポイントが MSIL にコンパイルされている DLL の読み込みに問題が発生する可能性があるため、DLL エントリ ポイント関数を MSIL にコンパイルすることは推奨されません。

詳細については、「混在アセンブリの初期化」をおよび「リンカ ツール エラー LNK1306」を参照してください。

このエラーを解決するには

  1. /clr を使用してモジュールをコンパイルしないでください。

  2. エントリ ポイント関数を #pragma unmanaged でマークします。

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

// C4747.cpp
// compile with: /clr /c /W1
// C4747 expected
#include <windows.h>

// Uncomment the following line to resolve.
// #pragma unmanaged

BOOL WINAPI DllMain(HANDLE hInstance, ULONG Command, LPVOID Reserved) {
   return TRUE;
};