Partilhar via


Erro das Ferramentas de Vinculador LNK1306

A função de ponto de entrada DLL não pode ser gerenciada; compilar para nativo

DllMain não pode ser compilado para MSIL; ele deve ser compilado para nativo.

Para resolver esse problema,

  • Compile o arquivo que contém o ponto de entrada sem /clr.

  • Coloque o ponto de entrada em uma seção #pragma unmanaged.

Para saber mais, veja:

Exemplo

A amostra a seguir gera 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 corrigir esse problema, não use a opção /clr para compilar esse arquivo ou use uma diretiva #pragma para colocar a definição do ponto de entrada em uma seção não gerenciada, conforme mostrado neste exemplo:

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