Freigeben über


Linkertoolfehler LNK1306

DLL-Einstiegspunktfunktion kann nicht verwaltet werden; Kompilieren auf systemeigene

DllMain kann nicht in MSIL kompiliert werden; sie muss auf systemeigenem Computer kompiliert werden.

Lösung:

  • Kompilieren Sie die Datei, die den Einstiegspunkt ohne /clr enthält.

  • Setzen Sie den Einstiegspunkt in einen #pragma unmanaged Abschnitt.

Weitere Informationen finden Sie unter:

Beispiel

Im folgenden Beispiel werden LNK1306 generiert.

// 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;
}

Verwenden Sie zum Beheben dieses Problems nicht die Option "/clr", um diese Datei zu kompilieren, oder verwenden Sie eine #pragma Direktive, um die Einstiegspunktdefinition in einen nicht verwalteten Abschnitt einzufügen, wie in diesem Beispiel gezeigt:

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