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“ 找不到标识符】的终极方案相关推荐

  1. error C3861: “setw”: 找不到标识符

    问题描述: error C3861: "setw": 找不到标识符 error C3861:'setw': identifier not found error C3861: &q ...

  2. 如何解决VC2019中:error C3861: “xxxx”: 找不到标识符

    如何解决VC2019中:error C3861: "xxxx"找不到标识符问题 问题原因: 因为C程序中代码是顺序编译的,不管是常量.变量,还是函数,都是先定义后使用的,不能先定义 ...

  3. error: C3861: “pcap_open”: 找不到标识符

    如图,但是头文件,已经明明包含,后来经过测试发现,应该是版本问题,需要再头文件前面一行加入: #define HAVE_REMOTE 或者 #include "remote-ext.h&qu ...

  4. error C3861: “cvRound”: 找不到标识符

    添加 #include <opencv2/core/core.hpp>

  5. VS2017下getcwd()函数“E0020未定义标识符;getcwd() 错误C3861“getcwd”: 找不到标识符”解决办法

    今天在VS2017上调试一个文件夹下搜索并给出特定后缀名(.cpp或者.h或者.txt)文件的文件名+路径程序时,需要用到getcwd()函数来获取当前工作路径.但是调试时一直报错"E002 ...

  6. “cvSnakeImage”: 找不到标识符

    1>g:\project\opencv\helloopencv\helloopencv\helloopencv.cpp(74) : error C2065: "CV_VALUE&quo ...

  7. error C3861: “XXXX(自定义函数名)”: 找不到标识符

    问题描述 调试程序时,输出窗口提示找不到标识符错误! 错误原因 程序中没有对自定义函数进行声明 解决方案 在主函数前对自定义函数进行声明,问题解决!

  8. 【C++ 11】 error C3861: ‘_beginthreadex‘: identifier not found

    [C++ 11] error C3861: '_beginthreadex': identifier not found 这个问题 在使用 多线程 操作的时候遇到的很少, 一旦遇到 第一个 反应 应该 ...

  9. 在数据库中, 不用max()/min()找出一个列中最大/最小值的记录

    不用max()/min()找出c1列中最大/最小值的记录 // 找出c1列中,c1是最小值的那条记录,不能用min() select * from t1 where c1 <= all(sele ...

最新文章

  1. 函数图像轻松画:教你用永中图象
  2. 一个专业搜索公司关于lucene+solar资料
  3. SQLAlchemy 一些基本操作
  4. maven project module 依赖项目创建 ---转
  5. 日志单例log4cpp简述
  6. 蓝桥每日真题之负载均衡
  7. CImage 获取图片RGB 、图片高和宽;
  8. 从我的客户谈营销公司怎样将创业企业做大的
  9. oracle客户端登录失败,Win7系统配置Oracle客户端连接失败的解决方法
  10. win10同时安装jdk8和jdk11
  11. javascript中文乱码问题分析及解决方案
  12. 北京小升初混战:有家长给孩子报7个奥数班
  13. 快递跟踪地图_基于百度地图的物流跟踪系统设计
  14. matlab霍夫曼吗仿真,霍夫曼编译码的Matlab代码实现
  15. 商汤面试题android,商汤面试经验
  16. scp在命令行中带密码远程拷贝文件
  17. 解决安装pyspider过程中,ERROR: Command python setup.py egg_info failed with error code 10 问题
  18. GNS3实现VPLS实验
  19. python自动排版公众号_自制微信公众号一键排版工具
  20. 酷家乐前端开发工程师一面

热门文章

  1. Revit二次开发_修改快捷键
  2. java调用zebra_java调用斑马GK888t打印机(ZPL指令)
  3. 学习(微信小程序 开发入门及案例详解 --李骏,边思编著)
  4. css+html中div和img对齐
  5. 聊聊编程语言学习之路
  6. Ubuntu中如何开启samba/smb共享
  7. 机器学习实战 支持向量机SVM 代码解析
  8. 墨者学院-密码学加解密实训(摩斯密码第2题)
  9. 关于 AlphaBlend 和 32bpp 的反锯齿图标
  10. 我六岁时开始使用计算机用英语怎么说,6岁就开始学习编程的她 对计算机技术有着强烈的兴趣 10岁之前,emma 10岁男童的朗诵诗搞 诗朗诵视频...