Compartir a través de


Error de las herramientas del vinculador LNK1306

la función de punto de entrada de archivo DLL no se puede administrar; compile en código nativo

DllMain no se puede compilar en MSIL; se debe compilar en código nativo.

Para resolver este problema,

  • Compile el archivo que contiene el punto de entrada sin /clr.

  • Coloque el punto de entrada en una sección #pragma unmanaged.

Para más información, consulte:

Ejemplo

El ejemplo siguiente genera el error 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;
}

Para corregir este problema, no use la opción /clr para compilar este archivo, o bien use una directiva #pragma para colocar la definición del punto de entrada en una sección no administrada, tal como se muestra en este ejemplo:

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