首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么VC2010在升级MFC42项目后尝试链接VC6 dll

为什么VC2010在升级MFC42项目后尝试链接VC6 dll
EN

Stack Overflow用户
提问于 2013-06-03 10:16:29
回答 3查看 4.4K关注 0票数 1

我将我的Win32项目从VC6升级到VC2010,并修复了许多只在VC6上工作的代码,编译是可以的,但是当该项目开始链接时,它失败了。

链接:致命错误LNK1104:无法打开文件'mfc42ud.lib‘

我试图找出MFC42ud在哪里被引用,但我做不到,它把我逼疯了。

有人能帮我吗?

更新:

现在我下载了MFC42ud.lib,但是仍然存在链接错误,现在它变成了

atlsd.lib(atltypes.obj):error LNK2005:"public:__thiscall CRect::CRect(void)“(??0 CRect@@QAE@XZ)已在mfc42ud.lib(MFC42uD.DLL)中定义。 atlsd.lib(atltypes.obj):error LNK2005:"public: int __thiscall CRect::Width(void)const“(?Width@CRect@@QBEHXZ)已在mfc42ud.lib(MFC42uD.DLL)中定义 atlsd.lib(atltypes.obj):error LNK2005:"public: int __thiscall CRect::Height(void)const“(?Height@CRect@@QBEHXZ)已在mfc42ud.lib(MFC42uD.DLL)中定义 链接:致命错误LNK1104:无法打开文件'mfcs42ud.lib‘

如果我只是复制MFC42ud.lib,它似乎是不兼容的,所以现在错误是多个定义。

EN

回答 3

Stack Overflow用户

发布于 2013-06-04 06:43:32

好的,我终于解决了。这是因为有一些lib我需要链接,并且在这些库中有一些链接信息。

原因是Microsoft指定的预处理器#实用化注释(lib,"some.lib")

实际上,它确实是一个糟糕的解决方案,特别是链接系统提供的库,比如mfc库。即使您升级了该项目,它仍然希望链接旧的mfc库。

解决方案是忽略旧的mfc库。

票数 2
EN

Stack Overflow用户

发布于 2013-06-03 11:10:14

它是Visual 6的MFC的Unicode调试版本,这是Visual 6安装过程中可选部件的一部分。

从VS6安装CD中安装它。

参考资料:http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/46a26f16-a407-4628-962b-2a6899391293/

附注:顺便说一句,这是谷歌的第一个结果。

票数 1
EN

Stack Overflow用户

发布于 2013-11-01 22:33:58

在我的例子中,我的项目是针对另一个库进行链接的,而这个库是用

代码语言:javascript
运行
复制
#pragma comment(lib, "mfc42.lib") 

在里面。

将这个库链接到我的项目中会指示我的项目链接到mfc42.lib,尽管我从来没有过这样的设置。

追踪和移除违规的库并不容易。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16894488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档