Поделиться через


Ошибка средств компоновщика LNK1306

Невозможно управлять функцией точки входа DLL; компиляция в машинный код

DllMain невозможно скомпилировать в MSIL; он должен быть скомпилирован в машинный код.

Действия по устранению проблемы:

  • Скомпилируйте файл, содержащий точку входа без /clr.

  • Поместите точку #pragma unmanaged входа в раздел.

Дополнительные сведения см. в разделе:

Пример

Следующий пример создает 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;
}

Чтобы устранить эту проблему, не используйте параметр /clr для компиляции этого файла или используйте #pragma директиву, чтобы поместить определение точки входа в неуправляемый раздел, как показано в этом примере:

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