Partager via


Erreur des outils Éditeur de liens LNK1306

La fonction de point d’entrée DLL ne peut pas être gérée ; compiler en mode natif

DllMain ne peut pas être compilé sur MSIL ; elle doit être compilée en mode natif.

Pour résoudre ce problème :

  • Compilez le fichier qui contient le point d’entrée sans /clr.

  • Placez le point d’entrée dans une #pragma unmanaged section.

Pour en savoir plus, consultez :

Exemple

L’exemple suivant génère 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;
}

Pour résoudre ce problème, n’utilisez pas l’option /clr pour compiler ce fichier, ou utilisez une #pragma directive pour placer la définition du point d’entrée dans une section non managée, comme illustré dans cet exemple :

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