【GdiplusTypes.h error C3861 “min“ 找不到标识符】的终极方案
1,背景
创建静态链接MFC的dll项目,其中用到了CImage。
编译报错:
1>D:\Windows Kits\10\Include\10.0.19041.0\um\GdiplusTypes.h(479,22): error C3861: “min”: 找不到标识符
1>D:\Windows Kits\10\Include\10.0.19041.0\um\GdiplusTypes.h(480,23): error C3861: “min”: 找不到标识符
1>D:\Windows Kits\10\Include\10.0.19041.0\um\GdiplusTypes.h(481,21): error C3861: “max”: 找不到标识符
1>D:\Windows Kits\10\Include\10.0.19041.0\um\GdiplusTypes.h(482,20): error C3861: “max”: 找不到标识符
1>D:\Windows Kits\10\Include\10.0.19041.0\um\GdiplusTypes.h(503,22): error C3861: “max”: 找不到标识符
网上的方法大同小异,都是让你自行定义min、max,仔细探究发现这些答案源头来自StackOverflow的这篇问答
很不巧,我试了要么没用,要么引出了更多问题
2,分析
CImage在 “atlImage.h"中声明,
打开 “atlImage.h"发现里面有 #include <gdiplus.h>
打开 “gdiplus.h"发现里面有 #include "GdiplusTypes.h"
而 "GdiplusTypes.h"里除了有 min、 max,还有Size、 Point这些和opencv容易混淆的东西
3,对策
对策很简单,我原本在xxx.h里的 #include <AtlImage.h> 挪到xxx.cpp里即可。
这样就免得xxx.h被重复包含后搞出奇奇怪怪的问题了。
之所以想到这么干,就是观察了微软官方samples里的案例。
【GdiplusTypes.h error C3861 “min“ 找不到标识符】的终极方案相关推荐
- error C3861: “setw”: 找不到标识符
问题描述: error C3861: "setw": 找不到标识符 error C3861:'setw': identifier not found error C3861: &q ...
- 如何解决VC2019中:error C3861: “xxxx”: 找不到标识符
如何解决VC2019中:error C3861: "xxxx"找不到标识符问题 问题原因: 因为C程序中代码是顺序编译的,不管是常量.变量,还是函数,都是先定义后使用的,不能先定义 ...
- error: C3861: “pcap_open”: 找不到标识符
如图,但是头文件,已经明明包含,后来经过测试发现,应该是版本问题,需要再头文件前面一行加入: #define HAVE_REMOTE 或者 #include "remote-ext.h&qu ...
- error C3861: “cvRound”: 找不到标识符
添加 #include <opencv2/core/core.hpp>
- VS2017下getcwd()函数“E0020未定义标识符;getcwd() 错误C3861“getcwd”: 找不到标识符”解决办法
今天在VS2017上调试一个文件夹下搜索并给出特定后缀名(.cpp或者.h或者.txt)文件的文件名+路径程序时,需要用到getcwd()函数来获取当前工作路径.但是调试时一直报错"E002 ...
- “cvSnakeImage”: 找不到标识符
1>g:\project\opencv\helloopencv\helloopencv\helloopencv.cpp(74) : error C2065: "CV_VALUE&quo ...
- error C3861: “XXXX(自定义函数名)”: 找不到标识符
问题描述 调试程序时,输出窗口提示找不到标识符错误! 错误原因 程序中没有对自定义函数进行声明 解决方案 在主函数前对自定义函数进行声明,问题解决!
- 【C++ 11】 error C3861: ‘_beginthreadex‘: identifier not found
[C++ 11] error C3861: '_beginthreadex': identifier not found 这个问题 在使用 多线程 操作的时候遇到的很少, 一旦遇到 第一个 反应 应该 ...
- 在数据库中, 不用max()/min()找出一个列中最大/最小值的记录
不用max()/min()找出c1列中最大/最小值的记录 // 找出c1列中,c1是最小值的那条记录,不能用min() select * from t1 where c1 <= all(sele ...
最新文章
- 函数图像轻松画:教你用永中图象
- 一个专业搜索公司关于lucene+solar资料
- SQLAlchemy 一些基本操作
- maven project module 依赖项目创建 ---转
- 日志单例log4cpp简述
- 蓝桥每日真题之负载均衡
- CImage 获取图片RGB 、图片高和宽;
- 从我的客户谈营销公司怎样将创业企业做大的
- oracle客户端登录失败,Win7系统配置Oracle客户端连接失败的解决方法
- win10同时安装jdk8和jdk11
- javascript中文乱码问题分析及解决方案
- 北京小升初混战:有家长给孩子报7个奥数班
- 快递跟踪地图_基于百度地图的物流跟踪系统设计
- matlab霍夫曼吗仿真,霍夫曼编译码的Matlab代码实现
- 商汤面试题android,商汤面试经验
- scp在命令行中带密码远程拷贝文件
- 解决安装pyspider过程中,ERROR: Command python setup.py egg_info failed with error code 10 问题
- GNS3实现VPLS实验
- python自动排版公众号_自制微信公众号一键排版工具
- 酷家乐前端开发工程师一面
热门文章
- Revit二次开发_修改快捷键
- java调用zebra_java调用斑马GK888t打印机(ZPL指令)
- 学习(微信小程序 开发入门及案例详解 --李骏,边思编著)
- css+html中div和img对齐
- 聊聊编程语言学习之路
- Ubuntu中如何开启samba/smb共享
- 机器学习实战 支持向量机SVM 代码解析
- 墨者学院-密码学加解密实训(摩斯密码第2题)
- 关于 AlphaBlend 和 32bpp 的反锯齿图标
- 我六岁时开始使用计算机用英语怎么说,6岁就开始学习编程的她 对计算机技术有着强烈的兴趣 10岁之前,emma 10岁男童的朗诵诗搞 诗朗诵视频...