平时自己的程序在小组的QT项目里边调试,懒人我突然想把自己那段移出来单独调试优化,毕竟每次把工程代码搬来搬去,万一哪天失手了,不知从何处补救。
在清除掉一些不必要的接口函数还有不必要的参数后,点击调试,出现这样一个错误提示:
error C2872: ACCESS_MASK: 不明确的符号。
有点懵,来不及懵。
- 当一个函数没有在编译头文件中找到定义时,一般就会报错:未标识的符号。
- 至于报错不明确的符号,那可能是因为,工程的编译文件里有多个该符号定义。
笔者没那么聪明,是在前辈基础经验上总结的。
opencv3.0的cv “ACCESS_MASK”冲突
不想打开链接可以直接看原文截图:
瞧见没?是因为winnt.h里边定义了cv,它的cv空间里有一个符号叫ACCESS_MASK;
opencv函数里边也定义了命名空间cv,它的cv空间里也有一个符号叫ACCESS_MASK。
那么我的项目如果同时包含这两个头文件,计算机是否知道我要调用哪个ACCESS_MASK吗?
回想平时写代码习惯性的:
using namespace std;
using namespace cv;
因为opencv里边很多函数,诸如imread,imshow,waitkey,Rect,Point,在使用频率上比较高,每次把它所在的命名空间书写有点麻烦,所以就习惯性的一次性了。
可惜懒人没懒福,这样的报错遇到过很多次,一直在回避。
改完这六百多个报错,以后还是一次性写清楚吧,不要给自己留隐患了。