非MFC工程使用MFC库时的问题及解决办法(如果要用CString或者提示windows头文件重复包含)

vc6和vc71的工程向导中都包含非MFC的工程,诸如win32 console project, win32 static library。非MFC工程创建时是不支持MFC特性的,然后我们在处理实际问题时有时会用到MFC相关类,如Cstring, Cedit等等,这是很正常的。可能有人会说,为何不在一开始就创建MFC工程呢?问题在于MFC工程会产生很多向导生成代码,如基于单文档的工程会有View,Doc等类,很多时候我们只需要一个空工程就可以了。

二、常见问题

非MFC工程使用MFC库时最常见的问题就是windows.h重复包含错误,具体如下:

fatal error C1189: #error :  WINDOWS.H already included.  MFC apps must not #include <windows.h>

三、解决办法

非MFC工程使用MFC库时,可参考以下步骤

1、工程设置中,将MFC的使用由原来的“使用标准windows库”改为“在共享DLL中使用MFC”(VC71)

如果是英文版,相关选项是:

Microsoft Foundation Classes: Use MFC in a shared dll, no using MFC(VC6)

NOTE:因为我用的是中文版的vc71,英文版的vc6.

2、头文件包含

不同的MFC类需包含的头文件是不一样的。

常用的类,如Cstring, Cedit 等,包含afxwin.h就可以了

如果不清楚包含什么头文件的话,可以同msdn进行查询,msdn中,对于MFC类的介绍中,都会给出相应的header file requirement.

3、#include 语句一定要写在首行

这一点很重要,通常出现前面讲到的windows.h重复包含错误,都是因为#include 语句没有写在首行。

另外还要注意的是,如果#include语句是在一个头文件里,那么对应头文件的包含也要写在首行。示例如下:

=============

test.h文件的内容如下:

#include <afxwin.h> //保证该语句在首行

test.cpp的文件内容如下:

#include “test.h” //同样也要保证该语句在首行

=============

ps: 这么做的具体原因我也不知道,我是在实际调试中琢磨出这个道理的。我自己在这个问题上花了很多冤枉时间,写下该篇,就是希望大家不要在这个问题上绊脚。

总结如下

如果要用cstring

就包含#include <afxwin.h>

并且要保证这个包含处于首行

我也折腾很久了

#mfc&c++&游戏

转载于:https://www.cnblogs.com/xihuafeiyu/articles/4153548.html

c++ 1:非MFC工程使用MFC库时的问题及解决办法(如果要用CString或者提示windows头文件重复包含)...相关推荐

  1. 安卓集成云闪付,以及So库冲突多moudle项目解决办法

    安卓集成云闪付,以及So库冲突多moudle项目解决办法 支付流程介绍 1.无图无真相 2.前往银联下载修仙工具 3.权限和混淆配置 4.开始编写代码 5.完结撒花 支付流程介绍 交易流程如下图: 安 ...

  2. (OS 10038)在一个非套接字上尝试了一个操作 的解决办法

    在SVN的机器上,系统盘,剩余空间不足1G, 经查看,是C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs里面存在了很多( ...

  3. 关于python 中h5py库安装不上的解决办法

    关于python 中h5py库安装不上的解决办法 问题 解决步骤 1.先安装wheel这个库,方法就是从命令行中输入pip install wheel 2.下载自己对应的h5py的版本,网址如下 3. ...

  4. Qt中调用OpenCV函数库时Crashed问题的解决。

    这几天想在虚拟机上搭建Ubuntu的开发环境,包括了Matlab和QT(C++)的开发工具安装等,同时由于做图像处理,所以还必须要安装FFMPEG和OpenCV库.下面就讲讲我们安装时出现qt中调用O ...

  5. 在MFC框架下使用osg报内存泄露的解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101/ 最近正在学习osg,从osgchina网站下下载了osg的debug版本库,具体地址为: OpenSceneGrap ...

  6. 【DSP】CCS6.1导入CCS3.3工程全过程以及“N个报错”的解决办法

    本人小硕,由于接到了一个关于语音识别的项目,一不小心掉到DSP的坑.首先需要解决的就是关于CCS软件的使用,网上N个教程,总感觉自己这边出的问题总能"完美避开"他们的范围,摸爬滚打 ...

  7. python解释器 pip安装_pip安装Python库时的问题及解决方法总结

    pip安装Python库时遇到的问题及解决方法 笔者电脑系统是win7,同时安装了Python2.7和Python3.6,但是在通过命令行直接使用"pip install XXX" ...

  8. MFC CEdit 中不能使用ctrl+v进行粘贴解决办法

    原因是因为没有处理Ctrl+V  的消息响应. 解决办法: 重写  PretranslateMessage函数.在PretranslateMessage中截获CEdit响应Ctrl+V  消息,然后截 ...

  9. GD库图片裁剪指定形状解决办法(PHP GD库 海报)

    需求描述:需要把图片裁剪成一个指定的平行四边形,目的是使用GD库,把裁剪后的图片放在底图上面,使最终合成的图片看起来是一个底图+平行四边形的样子 提示:可以结合本作者的其他文章,来生成一个定制化的海报 ...

最新文章

  1. audio 上一首 下一首 自定义样式_总有一首网易云,藏着你忘不掉的人。
  2. 信息系统项目管理师教材【下载PDF】
  3. css表格文字超数量就竖排_求助!!一个非常棘手的问题。就是文字竖排显示的问题...
  4. 地壳中元素含量排名记忆口诀_【中考化学】初中化学记忆性知识点03-生活中的化学-生活常识...
  5. SlideringDrawer的使用(抽屉效果)
  6. mysql语法中的LIMIT的用法
  7. 智慧交通day02-车流量检测实现02:多目标追踪
  8. werkzeug serving.run_simple
  9. vue.js基础知识篇(4):过滤器、class与style的绑定2
  10. H5游戏助力区块链成2019年新玩法?
  11. 查看自己本地IP地址方法
  12. 为什么if else过多会影响程序性能?(英文版)
  13. Matlab 两条曲线间填充颜色,改变透明度
  14. CSS 设置文字间距
  15. 举重若轻流水行云,前端纯CSS3实现质感非凡的图片Logo鼠标悬停(hover)光泽一闪而过的光影特效
  16. Java 回调函数Callback
  17. 虚拟机MAC地址冲突,如何生成新的mac地址
  18. 《谁说菜鸟不会数据分析 入门篇》学习笔记
  19. 解决org.hibernate.loader.MultipleBagFetchException: cannot simultaneously fetch multiple bags
  20. 【splay】BZOJ 1152 3506:[cqoi2014]排序机械臂

热门文章

  1. ​智能驾驶疆场,海天瑞声的「数据」纵横论
  2. CVPR 2020 Oral|效果超群的老照片“复活”算法
  3. VALSE 2020 公开征集 Workshop 候选讲者
  4. ICCV NAS Workshop 最佳论文提名:通过层级掩码实现高效神经网络架构搜索
  5. OpenVSLAM:日本先进工业科技研究所新开源视觉SLAM框架
  6. 《Python编程从入门到实践》记录之Python函数返回值
  7. 【绝对干货】TEASER前传之QUASAR:基于四元数的存在外点Wahba问题的可证明最优解
  8. python__画图表可参考(转自:寒小阳 逻辑回归应用之Kaggle泰坦尼克之灾)
  9. 配置linux登录超时命令,LINUX中 设置登录超时
  10. IDEA 安装JUnitGenerator V2.0 插件 帮助生成单元测试