MFC 错误 error C2504、error C1189

  • error C2504: “CDialogEx”: 未定义基类-报错解决
    • 报错原因
    • 问题解决方法:
  • ## 错误 error C1189

error C2504: “CDialogEx”: 未定义基类-报错解决

在MFC文件中添加资源窗口,后添加新类,随后在.h头文件中出现 CDialogEx C++ class 未定义基类错误。

解决:一般添加#include <afxdialogex.h>头文件就可以解决,还不行的话请看下面其他的解决方法。

报错原因

首先,上图这个framework.h非常关键,它在pch.h中也有定义,所以下图这个framework.h可以删掉,但是pch.h中的framework.h不能删除,否则必报类似CDialogEx C++ class 未定义基类的错误。

如果你把framework.h中如下语句删除,报错:

#include <afxcontrolbars.h> // MFC 支持功能区和控制条
在afxcontrolbars.h头文件中有afxdialogex.h头文件,该头文件中定义了基类CDialogEx:


问题解决方法:

  • 添加
    #include <afxdialogex.h>
    #include <windows.h>均不行

  • 添加
    #include <afx.h>
    #include <windows.h>均不行

  • 添加了
    #include <afxwin.h>也不行

  • 添加以下代码:
    #include <afxcontrolbars.h>
    成功!
    ————————————————
    版权声明:本文为CSDN博主「Pvr1sC」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/m0_51911432/article/details/122816079

## 错误 error C1189

如果新建一个Win32控制台应用程序,应用程序设置里附加选项勾选了"预编译头",但是程序里使用了CString等MFC框架中的类型的话,编译报错,在stdafx.h中添加MFC框架程序需要的头文件:

#pragma once#include <stdio.h>
#include <tchar.h>
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS  // 某些 CString 构造函数将是显式的#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN        // 从 Windows 头中排除极少使用的资料
#endif#include <afx.h>
#include <afxwin.h>         // MFC 核心组件和标准组件
#include <afxext.h>         // MFC 扩展
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h>     // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h>           // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT#include <iostream>
#include <atlbase.h>
#include <atlstr.h>

编译后如果报如下错误的话:

Building MFC application with /MD[d] (CRT dll version) requires MFC share dll version.Please #define _AFXDLL or do not use /MD[d]

解决方法:在stdafx.h头文件中添加#define _AFXDLL即可。

MFC 错误 error C2504: “CDialogEx”: 未定义基类,以及错误error C1189相关推荐

  1. error C2504: “CDialogEx”: 未定义基类-报错解决

    当MFC写下如下代码 Dlg d; //Dlg为可视化界面的类 Dlg.DoModal(); 就会出现 Dlg class类没有DoModal error C2504: "CDialogEx ...

  2. error C2504: “XXXXXXX”: 未定义基类

    今天犯到了一个低级错误,记下来加深印象. 造成这一现象主要的原因是头文件相互包含,文件构成一个环形结构,从而编译时循环包含出错 如: AA.h中包含BB.h BB.h中包含CC.h CC.h中包含AA ...

  3. c++ error:C2504 提示未定义基类

    [背景] 说明:如何打开1处, 注释掉3,则会提示4的错误.如果注释掉1,打开3,则正确.总之,在定义函数中将基类的头文件放在 子类前,很简单,但一不小心很容易出错误.

  4. error:C2504 :“xxxxxxx“未定义基类

    自己遇到该问题的经过: 1.QT项目中已有一个类CModuleFile,类B继承类CModuleFile.(此时可以正常编译). 2.重命名类CModuleFile为类CModuleFileDeal. ...

  5. VS2022写Qt代码遇到的问题之 C2504 “xxx”: 未定义基类 (编译源文件

    今天写代码的时候遇到一个这个问题,一直报错,说未定义基类,实际上是定义了的,但是就是报错.我分析问题的思路记录一下.这个问题 这个是微软给的提示.我明明定义了但是就是没找到. 后来我分析应该是编译器在 ...

  6. c2054未定义基类_c++ - 错误C2504:基类未定义 - 堆栈内存溢出

    我之前多次遇到过这个错误并最终找到了解决方案,但是这个让我难过. 我有一个由'Player'继承的类'Mob'. 这是Mob.h: #pragma once #include "PlaySt ...

  7. 黑马程序员mfc中分割窗口---ctreeview未定义基类的解决方法

    在跟班黑马程序学mfc中分割窗口,vs2019出现了以下的错误.解决方法很简单. 首先我们点击错误,自动定位到出错的类,会发现出错的是CSelcetView的头文件和源文件出错, 我们找到头文件中 在 ...

  8. VS error c2504未定义基类

    问题描述 error c2504未定义基类,编译错误,和#include头文件有关. 感谢 http://blog.csdn.net/qncj666/article/details/8562338 详 ...

  9. C++ 头文件的相互包含问题C2504未定义基类 | C2143,C4430,C2238

    文件相互包含的错误问题 序言 可能会有的疑问 原因分析 C2504: 未定义的基类 C2143: 语法错误: 缺少";"(在"*"的前面) C4430: 缺少类 ...

最新文章

  1. Android上传队列使用
  2. Javascript深入浅出
  3. samtools merge_【生信工具】Samtools 安装与使用 | “十年以后,工具难免沦为朋友”...
  4. 对象的比较与排序(三):实现IComparableT和IComparerT泛型接口
  5. 签入VSS中遇到UTF-8问题
  6. 2019ICPC(南昌) - The Nth Item(矩阵快速幂)
  7. 为什么要用webUI?
  8. .NET Core 和 .NET Framework 启动可执行文件的差别
  9. php 遍历所有网站网址,使用selenium获取网址所加载所有资源url列表信息
  10. python面向对象三大特性6大原则_【Python学习笔记】面向对象三大特性
  11. re模块中的非贪婪匹配
  12. python numpy和pandas做数据分析时去掉科学记数法显示
  13. 翻译: Octave 入门教程
  14. LoadRunner 压力测试
  15. 至强服务器性能排行,至强cpu天梯图,至强服务器cpu排行-
  16. 实现mac状态栏图标的隐藏
  17. mysql占用CPU过高解决
  18. 官媒痛批“精神鸦片”,曾拿百万年终奖的腾讯游戏员工要失业了吗?
  19. TCP/IP详解 第二章 Internet地址结构
  20. C++类、结构体、函数、变量等命名规则详解

热门文章

  1. python求均方根_Python科学计算
  2. 学Python的第八天---递归与递推
  3. 小程序商城+公众号+线上线下相结合
  4. 如何在vue项目中实现前端埋点?埋点用户操作之Vue实现
  5. 【英语:基础进阶_语法进阶提升】F1.英文时态进阶
  6. 电力现货价格的高效建模和预测(R实现)
  7. 大数据学习之推荐算法真的很牛逼吗?
  8. 5-按键灯 技巧2:中断控制方式 | Mixly技巧系列
  9. 双重for循环的实例(时钟运转、长方形、平行四边形、三角形)
  10. 理解 ES6 Generator 函数