Udostępnij przez


Błąd narzędzi konsolidatora LNK1306

Nie można zarządzać funkcją punktu wejścia biblioteki DLL; kompilowanie natywne

Uwagi

DllMain nie można skompilować do MSIL; należy go skompilować do natywnego.

Aby rozwiązać ten problem:

  • Skompiluj plik zawierający punkt wejścia bez /clr.

  • Umieść punkt wejścia w #pragma unmanaged sekcji.

Aby uzyskać więcej informacji, zobacz:

Przykład

Poniższy przykład generuje 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;
}

Aby rozwiązać ten problem, nie używaj opcji /clr do skompilowania tego pliku lub użyj dyrektywy , aby umieścić definicję #pragma punktu wejścia w sekcji niezarządzanej, jak pokazano w tym przykładzie:

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