error LNK2005: _DllMain@12 已经在 XXXX.obj 中定义
2013-10-21 09:45
274 查看
转载来源:http://blog.csdn.net/honker110/article/details/6120758
出现这种问题的情形有很多,这里只说明下我遇到的这种情形及其解决方法:
问题原因:
1、 用VS的MFC DLL模板建立DLL项目;
2、出于实际需要,将自动生成的App模板代码删掉,改用win32风格的DLL入口:
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID /*lpReserved*/
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
......
}
return TRUE;
}
3、经过上述改动后,编译,就会报出DllMain的链接错误。
解决:
很明显,根据链接给出的错误信息,一个项目里面出来了两个入口,这肯定是不允许的。可是,另外一个入口在哪呢?明明已经删掉了啊(App类)。
答案是:删掉预处理器_USRDLL。
出现这种问题的情形有很多,这里只说明下我遇到的这种情形及其解决方法:
问题原因:
1、 用VS的MFC DLL模板建立DLL项目;
2、出于实际需要,将自动生成的App模板代码删掉,改用win32风格的DLL入口:
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID /*lpReserved*/
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
......
}
return TRUE;
}
3、经过上述改动后,编译,就会报出DllMain的链接错误。
解决:
很明显,根据链接给出的错误信息,一个项目里面出来了两个入口,这肯定是不允许的。可是,另外一个入口在哪呢?明明已经删掉了啊(App类)。
答案是:删掉预处理器_USRDLL。
相关文章推荐
- error LNK2005: _DllMain@12 已经在 LIBCMTD.lib(dllmain.obj) 中定义
- VC: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在dllmain.obj 中定义
- VC++编译错误: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12已经在dllmain.obj 中定义
- VC: error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
- error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
- mfcs80ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经定义 的 解决方法
- 遇到此类问题:error LNK2005: _DllMain@12 已经在 MSVCRT.lib(dllmain.obj) 中定义
- VC编译错误: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12已经在dllmain.obj 中定义
- 封装dll遇到的奇葩错误:error LNK2005: _DllMain@12 已经在 DLLMain.obj 中定义
- error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
- VC编译错误: Nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12已经在dllmain.obj 中定义
- mfcs100ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
- ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
- uafxcwd.lib(afxmem.obj) : error LNK2005: 已经在 LIBCMTD.lib(new.obj) 中定义错误解决方案
- LNK2005错误 :error LNK2005: 已经在 libcmtd.lib(dbgheap.obj) 中定义
- 关于VS2008编译错误"error LNK2005: 已经在 .obj 中定义"
- LNK2005错误 :error LNK2005: _free 已经在 libcmtd.lib(dbgheap.obj) 中定义
- ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义 .的分析解决办法
- error:LNK2005 已经在*.obj中定义
- error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) 已经在 LIBCMTD.lib(dbgdel.obj) 中定义