问题原因:
1、 用VS的MFC DLL模板建立DLL项目;
2、出于实际需要,将自动生成的App模板代码删掉,改用win32风格的DLL入口:
BOOL APIENTRYDllMain( HMODULEhModule,
DWORD ul_reason_for_call,
LPVOIDlpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
3、经过上述改动后,编译,就会报出DllMain的链接错误。
解决方法:
很明显,根据链接给出的错误信息,一个项目里面出来了两个入口,这肯定是不允许的。可是,另外一个入口在哪呢?
答案是:删掉预处理器_USRDLL。