VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1047|回复: 7

[已解决]新建的MFC程序,直接编译为什么会不通过?

[复制链接]
95_avatar_middle
最佳答案
0 
在线会员 发表于 2020-4-14 22:09:37 | 显示全部楼层 |阅读模式
本帖最后由 像风一样自由 于 2020-4-14 22:11 编辑

我看视频Syc大大编译刚刚新建的MFC都是直接通过的,为什么我这里编译会出现错误呢?错误如下:

新建的MFC程序,直接编译为什么会不通过?

1>  正在生成代码...
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "void __cdecl AfxRegisterMFCCtrlClasses(void)" (?AfxRegisterMFCCtrlClasses@@YAXXZ) 已经在 afxnmcdd.lib(afxctrlcontainer2.obj) 中定义
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "protected: void __thiscall CMFCControlContainer::PreUnsubclassControl(class CWnd *)" (?PreUnsubclassControl@CMFCControlContainer@@IAEXPAVCWnd@@@Z) 已经在 afxnmcdd.lib(afxctrlcontainer2.obj) 中定义
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "public: int __thiscall CMFCControlContainer::SubclassDlgControls(void)" (?SubclassDlgControls@CMFCControlContainer@@QAEHXZ) 已经在 afxnmcdd.lib(afxctrlcontainer2.obj) 中定义
1>E:\Documents\Visual Studio 2013\Projects\MFCDialog\Debug\MFCDialog.exe : fatal error LNK1169: 找到一个或多个多重定义的符号
========== 生成:  成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

/////////////////////////////////////////////

之后我上网上查了,有个人说是把头文件中的stdafx.h 里面的"#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS " 注释掉,我按照他说的注释了之后,再编译果然就ok了。奇怪的是,syc大大的课件代码里面这句话是没有注释的,但是在我电脑上编译也同样没有问题。不知道这是啥原因?新建的MFC程序,直接编译为什么会不通过?
最佳答案
51_avatar_small
2020-4-15 09:10:48
整个工程搜索 CDialogEx 替换成 CDialog 就可以了




上一篇:如何区分这道题中的两种风格?
下一篇:MFC时间转换问题
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-15 13:02:29 | 显示全部楼层
冰淇淋 发表于 2020-4-15 13:01
你是用的VS2013是吧,
我之前也是
按照老大说的如果也没有效果

注释掉的那一行是无增强的mfc控件的选项
如果没有特殊需求直接注释掉也是可以的
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-15 13:01:11 | 显示全部楼层
你是用的VS2013是吧,
我之前也是
按照老大说的如果也没有效果
那就装VS2017吧
或者修复安装环境
这样就好了
51_avatar_middle
最佳答案
90 
online_admins 发表于 2020-4-15 09:10:48 | 显示全部楼层    本楼为最佳答案   
bestAnswer
整个工程搜索 CDialogEx 替换成 CDialog 就可以了

评分

参与人数 1驿站币 +1 热心值 +1 收起 理由
95_avatar_small 像风一样自由 + 1 + 1

查看全部评分

95_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-17 00:39:57 | 显示全部楼层
Syc 发表于 2020-4-15 09:10
整个工程搜索 CDialogEx 替换成 CDialog 就可以了

新建的MFC程序,直接编译为什么会不通过?谢谢老大!
95_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2020-4-17 00:46:31 | 显示全部楼层
冰淇淋 发表于 2020-4-15 13:02
注释掉的那一行是无增强的mfc控件的选项
如果没有特殊需求直接注释掉也是可以的


替换一下就ok,可能默认的是生成CDialogEx这个扩展类,而一开始创建工程的时候选了无增强的mfc控件,导致冲突了
94_avatar_middle
最佳答案
4 
donate_vip 发表于 2020-4-17 12:36:53 | 显示全部楼层
像风一样自由 发表于 2020-4-17 00:46
替换一下就ok,可能默认的是生成CDialogEx这个扩展类,而一开始创建工程的时候选了无增强的mfc控件,导 ...

嗯嗯,解决了就好!
16_avatar_middle
最佳答案
0 
在线会员 发表于 2020-6-14 14:13:45 | 显示全部楼层
像风一样自由 发表于 2020-4-17 00:46
替换一下就ok,可能默认的是生成CDialogEx这个扩展类,而一开始创建工程的时候选了无增强的mfc控件,导 ...

我替换过,但是还是出错
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2023-5-29 22:55

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表