意思好像是提示某些函数atl or mfc函数在我的那个lib中已有定义了。
该写什么才能避免2个地方都有定义。以下是报错信息:
正在链接...
atlsd.lib(atltime.obj) : error LNK2005: "public: static class ATL::CTime __stdcall ATL::CTime::GetTickCount(void)" (?GetTickCount@CTime@ATL@@SG?AV12@XZ) 已经在 tokamak.lib(tokamak.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: __thiscall ATL::CTime::CTime(__int64)" (??0CTime@ATL@@QAE@_J@Z) 已经在 tokamak.lib(tokamak.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: struct tm * __thiscall ATL::CTime::GetLocalTm(struct tm *)const " (?GetLocalTm@CTime@ATL@@QBEPAUtm@@PAU3@@Z) 已经在 tokamak.lib(tokamak.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetYear(void)const " (?GetYear@CTime@ATL@@QBEHXZ) 已经在 tokamak.lib(tokamak.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetMonth(void)const " (?GetMonth@CTime@ATL@@QBEHXZ) 已经在 tokamak.lib(tokamak.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetDay(void)const " (?GetDay@CTime@ATL@@QBEHXZ) 已经在 tokamak.lib(tokamak.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetHour(void)const " (?GetHour@CTime@ATL@@QBEHXZ) 已经在 tokamak.lib(tokamak.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetMinute(void)const " (?GetMinute@CTime@ATL@@QBEHXZ) 已经在 tokamak.lib(tokamak.obj) 中定义
mfcs71d.lib(nolib.obj) : warning LNK4098: 默认库“mfc71.lib”与其他库的使用冲突;使用 /NODEFAULTLIB:library
mfcs71d.lib(nolib.obj) : warning LNK4098: 默认库“mfcs71.lib”与其他库的使用冲突;使用 /NODEFAULTLIB:library
msvcrtd.lib(cinitexe.obj) : warning LNK4098: 默认库“msvcrt.lib”与其他库的使用冲突;使用 /NODEFAULTLIB:library
Debug/Rtl_2003.exe : fatal error LNK1169: 找到一个或多个多重定义的符号

解决方案 »

  1.   

    不是吧!我写的库它添加了预编译头、ATL和MFC的支持,会不会我再写新的MFC程序时会有冲突,比如在my.lib中有定义,又在新的MFC程序的头文件里STDAFX.H里也有定义
    #include <afxwin.h>         // MFC 核心和标准组件
    #include <afxext.h>         // MFC 扩展
    #include <afxdisp.h>        // MFC 自动化类