老大们帮个忙,我都快急疯了!!!!我自己写的lib有ATL和MFC支持,然后再写一个mfc程序调用此库,就有问题了。。。

huhaha7171 2005-07-19 06:28:22
我写的lib中用到了许多mfc的类和函数,lib的名字叫tomato.lib不会和系统的重名。

在新写的mfc程序里,debug时出现以下提示信息:
首先是
正在链接...
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

我怀疑是否和我在tomato.lib中有mfc支持有关?如果是的,该怎么在新写的程序里避免?(请不要告诉我在tomato.lib中去掉mfc的支持,那些功能我还是要用)

这是刚开始的警告信息。
我加了以下代码
/*CFileStatus status;
if(!CFile::GetStatus(exepath, status))*/
出来更多的错误信息:
正在链接...
atlsd.lib(atltime.obj) : error LNK2005: "public: static class ATL::CTime __stdcall ATL::CTime::GetTickCount(void)" (?GetTickCount@CTime@ATL@@SG?AV12@XZ) 已经在 tomato.lib(ini.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: __thiscall ATL::CTime::CTime(__int64)" (??0CTime@ATL@@QAE@_J@Z) 已经在 tomato.lib(ini.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: struct tm * __thiscall ATL::CTime::GetLocalTm(struct tm *)const " (?GetLocalTm@CTime@ATL@@QBEPAUtm@@PAU3@@Z) 已经在 tomato.lib(ini.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetYear(void)const " (?GetYear@CTime@ATL@@QBEHXZ) 已经在 tomato.lib(ini.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetMonth(void)const " (?GetMonth@CTime@ATL@@QBEHXZ) 已经在 tomato.lib(ini.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetDay(void)const " (?GetDay@CTime@ATL@@QBEHXZ) 已经在 tomato.lib(ini.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetHour(void)const " (?GetHour@CTime@ATL@@QBEHXZ) 已经在 tomato.lib(ini.obj) 中定义
atlsd.lib(atltime.obj) : error LNK2005: "public: int __thiscall ATL::CTime::GetMinute(void)const " (?GetMinute@CTime@ATL@@QBEHXZ) 已经在 tomato.lib(ini.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: 找到一个或多个多重定义的符号

求求你们了!
...全文
427 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2005-07-20
  • 打赏
  • 举报
回复
是不是使用了单线程的库?
huhaha7171 2005-07-20
  • 打赏
  • 举报
回复
是不是使用了单线程的库?
******************************

我写的lib是单线程的。
nelsonc 2005-07-20
  • 打赏
  • 举报
回复
还有C/C++运行库啊。也要一至的。
huhaha7171 2005-07-19
  • 打赏
  • 举报
回复
另外,debug出现以上的已经在 tomato.lib(ini.obj) 中定义的提示信息;
但是release没有出现错误,但是程序运行起来后就有问题。

实在是头疼
huhaha7171 2005-07-19
  • 打赏
  • 举报
回复
2个我都看了:
都是
mfc的使用:在共享 DLL 中使用 MFC
atl的使用:不使用 ATL
在atl中最小使用crt:否
字符集:使用多字节字符集
nelsonc 2005-07-19
  • 打赏
  • 举报
回复
连接方式是在project里设定的。每个project都可能不一样。
huhaha7171 2005-07-19
  • 打赏
  • 举报
回复
这个lib库的MFC连接方式必须和新的MFC应用程序一致,否则会出现编译错误。

******************************************
这都是在我的机子上试的,应该是一致的
nelsonc 2005-07-19
  • 打赏
  • 举报
回复
domustdohz(迷茫) 说的对!!!
检查一下每个Project的MFC库连接方式。还有VC Runtime Library的连接方式也要查。
up_down(落网灰虫) 的方法虽然可能有效,但是有一定的机率会出问题。
AntonlioX 2005-07-19
  • 打赏
  • 举报
回复
up
开始远离编程 2005-07-19
  • 打赏
  • 举报
回复
看看,tomato的lib工程中的MFC是静态连接还是动态连接?这个lib库的MFC连接方式必须和新的MFC应用程序一致,否则会出现编译错误。
up_down 2005-07-19
  • 打赏
  • 举报
回复
试试打开调用程序,点工程菜单,单击设置(Alt+F7...),单击link页,分类下拉列表框中选择INPUT,忽略库中加入mfc71.lib mfcs71.lib msvcrt.lib,保存,再链接,试试。
先去掉/*CFileStatus status;
if(!CFile::GetStatus(exepath, status))*/

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧