编译器警告(等级 1)C4747
调用托管“entrypoint”: 托管代码可能未运行在加载程序锁下,包括 DLL 入口点和从 DLL 入口点访问到的调用
编译器找到编译为 MSIL 的(可能)DLL 入口点。由于加载入口点已编译为 MSIL 的 DLL 时存在一些潜在问题,因此强烈建议不要将 DLL 入口点函数编译为 MSIL。
有关更多信息,请参见混合程序集的初始化和链接器工具错误 LNK1306。
更正此错误
不要使用 /clr 编译该模块。
使用 #pragma unmanaged 标记入口点函数。
示例
下面的示例生成 C4747。
// C4747.cpp
// compile with: /clr /c /W1
// C4747 expected
#include <windows.h>
// Uncomment the following line to resolve.
// #pragma unmanaged
BOOL WINAPI DllMain(HANDLE hInstance, ULONG Command, LPVOID Reserved) {
return TRUE;
};