一个编译链接问题

开始远离编程 2004-11-29 04:55:46
vc.net 2003, 界面用到BCGCBPro6.74 的库文件
错误太多,这里只粘贴了部分。请各位大虾多加指点。多谢了!

正在链接...
nafxcw.lib(winfrm.obj) : error LNK2005: "public: virtual struct HACCEL__ * __thiscall CFrameWnd::GetDefaultAccelerator(void)" (?GetDefaultAccelerator@CFrameWnd@@UAEPAUHACCEL__@@XZ) 已经在 mfc71d.lib(MFC71D.DLL) 中定义
nafxcw.lib(winfrm.obj) : error LNK2005: "protected: virtual void __thiscall CFrameWnd::PostNcDestroy(void)" (?PostNcDestroy@CFrameWnd@@MAEXXZ) 已经在 mfc71d.lib(MFC71D.DLL) 中定义
nafxcw.lib(winfrm.obj) : error LNK2005: "public: virtual void __thiscall CFrameWnd::BeginModalState(void)" (?BeginModalState@CFrameWnd@@UAEXXZ) 已经在 mfc71d.lib(MFC71D.DLL) 中定义
nafxcw.lib(winfrm.obj) : error LNK2005: "public: virtual void __thiscall CFrameWnd::EndModalState(void)" (?EndModalState@CFrameWnd@@UAEXXZ) 已经在 mfc71d.lib(MFC71D.DLL) 中定义

libcmt.lib(crt0dat.obj) : error LNK2005: _exit 已经在 msvcrtd.lib(MSVCR71D.dll) 中定义
libcmt.lib(crt0dat.obj) : error LNK2005: __exit 已经在 msvcrtd.lib(MSVCR71D.dll) 中定义
libcmt.lib(crt0dat.obj) : error LNK2005: __cexit 已经在 msvcrtd.lib(MSVCR71D.dll) 中定义
libcmt.lib(crt0dat.obj) : error LNK2005: __c_exit 已经在 msvcrtd.lib(MSVCR71D.dll) 中定义

atlsd.lib(atltypes.obj) : error LNK2005: "public: __thiscall CSize::CSize(void)" (??0CSize@@QAE@XZ) 已经在 nafxcw.lib(barcore.obj) 中定义
atlsd.lib(atltypes.obj) : error LNK2005: "public: __thiscall CSize::CSize(int,int)" (??0CSize@@QAE@HH@Z) 已经在 nafxcw.lib(winmini.obj) 中定义
atlsd.lib(atltypes.obj) : error LNK2005: "public: __thiscall CSize::CSize(struct tagSIZE)" (??0CSize@@QAE@UtagSIZE@@@Z) 已经在 nafxcw.lib(bartool.obj) 中定义
atlsd.lib(atltypes.obj) : error LNK2005: "public: __thiscall CSize::CSize(unsigned long)" (??0CSize@@QAE@K@Z) 已经在 nafxcw.lib(bartool.obj) 中定义
atlsd.lib(atltypes.obj) : error LNK2005: "public: int __thiscall CSize::operator==(struct tagSIZE)const " (??8CSize@@QBEHUtagSIZE@@@Z) 已经在 nafxcw.lib(bartool.obj) 中定义
atlsd.lib(atltypes.obj) : error LNK2005: "public: class CSize __thiscall CSize::operator-(struct tagSIZE)const " (??GCSize@@QBE?AV0@UtagSIZE@@@Z) 已经在 nafxcw.lib(dockcont.obj) 中定义
atlsd.lib(atltypes.obj) : error LNK2005: "public: __thiscall CPoint::CPoint(void)" (??0CPoint@@QAE@XZ) 已经在 nafxcw.lib(afxstate.obj) 中定义
atlsd.lib(atltypes.obj) : error LNK2005: "public: __thiscall CPoint::CPoint(int,int)" (??0CPoint@@QAE@HH@Z) 已经在 nafxcw.lib(winfrm.obj) 中定义

msvcrtd.lib(MSVCR71D.dll) : error LNK2005: __ltoa 已经在 libcmt.lib(xtoa.obj) 中定义
msvcrtd.lib(MSVCR71D.dll) : error LNK2005: __stricmp 已经在 libcmt.lib(stricmp.obj) 中定义
msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 libcmt.lib(typinfo.obj) 中定义
msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 libcmt.lib(typinfo.obj) 中定义
LINK : warning LNK4098: 默认库“msvcrtd.lib”与其他库的使用冲突;使用 /NODEFAULTLIB:library
LINK : warning LNK4098: 默认库“nafxcw.lib”与其他库的使用冲突;使用 /NODEFAULTLIB:library
LINK : warning LNK4098: 默认库“libcmt.lib”与其他库的使用冲突;使用 /NODEFAULTLIB:library
sanalipg.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall CStockJXiaDanView::SendData(void *,int)" (?SendData@CStockJXiaDanView@@QAEXPAXH@Z) ,该符号在函数 "public: virtual void __thiscall CStockAnalisysPageView::RequestData(void)" (?RequestData@CStockAnalisysPageView@@UAEXXZ) 中被引用
libcmt.lib(crt0.obj) : error LNK2019: 无法解析的外部符号 _main ,该符号在函数 _mainCRTStartup 中被引用
StockJXiaDan - 487 错误,3 警告
...全文
566 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
开始远离编程 2004-11-30
  • 打赏
  • 举报
回复
多谢各位大虾的帮忙,问题已经解决了。
以前尝试了很多次都不成功,因为静态库中用到的mfc是静态链接的,开始我以为是动态链接没发现。
汗~~~,发现后,更改编译生成的静态库又放错了目录。结果,整合后的工程一直在用原先的静态库。
当然不会链接成功罗。粗心阿!刚才重新新建了工程才发现问题。希望大家不要犯我这样的错误。
新建工程后,用到mfc的地方无论是静态库还是主程序只要都动态链接MFC,bcg也选择动态链接方式。
工程链接成功。再次感谢大家~~~
开始远离编程 2004-11-30
  • 打赏
  • 举报
回复
你用到静态库,静态库中使用到了MFC?
那么,你的程序与BCG的链接也只能是静态链接了。
静态库中是用到mfc了,只能都静态链接了吗?有没有其他办法?
我试着全部静态链接,好像还是会出现不少链接问题
各位大虾还有好的解决方法吗?
lyjlee 2004-11-29
  • 打赏
  • 举报
回复
bcg这东西太乱了, bug一大堆。不过幸好他是开源的,
我公司这个项目修正了不少bug.
开始远离编程 2004-11-29
  • 打赏
  • 举报
回复
静态库中是用到mfc了,只能都静态链接了吗?有没有其他办法?
oyljerry 2004-11-29
  • 打赏
  • 举报
回复
嗯,如果用了static的mfc,就只能都用static link
DentistryDoctor 2004-11-29
  • 打赏
  • 举报
回复
你用到静态库,静态库中使用到了MFC?
那么,你的程序与BCG的链接也只能是静态链接了。
oyljerry 2004-11-29
  • 打赏
  • 举报
回复
动态库和静态库编译可能冲突了
开始远离编程 2004-11-29
  • 打赏
  • 举报
回复
我已经使用使用多线程的运行时库:/MT(d)
我是将两个工程整合到一起去。其中一个用BCGCBPro6.74写了界面主程序和其中一个模块,里面用到一个负责网络通信的动态库,此动态库在VC6下编译的。 另一个工程没有用BCGCBPro6.74,直接写界面,他用到两个静态库,其中一个是负责网络通信,另一个是一些对字符窜等进行处理的函数集(使用标准 Windows 库)。各自都运行正常。整合到一起就不行了
DentistryDoctor 2004-11-29
  • 打赏
  • 举报
回复
应该使用多线程的运行时库:/MT(d)
快乐鹦鹉 2004-11-29
  • 打赏
  • 举报
回复
都是链接错误。可能设置有问题。可能没有包含lib文件。原因多多。CSDN上多搜一下。已经有解决办法的。
DentistryDoctor 2004-11-29
  • 打赏
  • 举报
回复
应该是项目选项的问题。

16,548

社区成员

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

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

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