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)