第一步:
MFC DLL工程,release link出错:
Linking...
nafxcw.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in LIBCMT.lib(dllmain.obj)第二步:
按网上说的这样解决:
强制链接程序按照正确的顺序链接库
1. 在"生成"菜单上,单击"设置"。 
2. 在"项目设置"对话框的"以下项目的设置"视图中,单击以选中出现链接错误的项目配置。 
3. 在"链接"选项卡上,单击以选中"类别"组合框中的"INPUT"。 
4. 在"要忽略的库"中,插入库名(例如,Nafxcwd.lib;Libcmtd.lib)。注意:等效的链接程序命令行是:/NOD:。 
5. 在"对象/库模块"框中,插入库名。必须确保这些库按顺序列出,且作为命令行中的前两个库(例如,Nafxcwd.lib 和 Libcmtd.lib)列出。 
第三步:
再编译,又出这个问题:Linking...
Nafxcwd.lib(afxinl1.obj) : error LNK2005: "public: virtual __thiscall CObject::~CObject(void)" (??1CObject@@UAE@XZ) already defined in Player.obj  Player是我自己写的对象
Nafxcwd.lib(afxinl1.obj) : error LNK2005: "public: virtual void __thiscall CObject::Serialize(class CArchive &)" (?Serialize@CObject@@UAEXAAVCArchive@@@Z) already defined in GroupLib.obj
Nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in Libcmtd.lib(dllmain.obj); second definition ignored
Nafxcwd.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in Libcmtd.lib(new.obj); second definition ignored
Nafxcwd.lib(afxmem.obj) : warning LNK4006: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in Libcmtd.lib(dbgdel.obj); second definition ignored
是什么原因啊?请大家指导,谢谢

解决方案 »

  1.   

    http://blog.csdn.net/vcleaner/archive/2005/02/01/276278.aspx
      

  2.   

    楼主你是不是把工程类型搞错了.扩展DLL是不能再人为定义dllmain的。
      

  3.   

    Setting 得C/C++  --》General中加入 
    ,_AFXDLL 
    在include中加入: 
    mfc42d.lib msvcrtd.lib 
    就可以了 LINK : warning LNK4098: defaultlib "MSVCRT" conflicts with use of other libs; use /NODEFAULTLIB:library 在忽略库中加入: msvcrt.lib就可以了