编译tesseract出现“remove_reference” 不明确的符号错误

编译tesseract时遇到'remove_reference'不明确的符号错误,问题源于using namespace std与tesseract头文件冲突。解决方案包括取消using namespace std,显式使用std::,或在错误代码行前添加::。双冒号::是C++的域操作符,用于区分不同作用域的成员,例如类成员、全局函数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#随笔小记- 编译tesseract出现“remove_reference”: 不明确的符号错误

​ 在编译tesseract相关程序时,出现下面错误:“错误 C2872 “remove_reference”: 不明确的符号 tesseract-OCR e:\tesseract4.1.0-vs2017-win10\include\tesseract\tesscallback.h 161”转到相关行代码,在网上参考许多帖。

​ 总结:由于using namespace std;里面也定义了remove_reference造成该错误。网上给出解决方法:1.取消使用using namespace std; 在所有用到std的地方添加std::;2.删除有关remove_reference。3.调换using namespace std和引用tesseract里面头文件出现的顺序。

template <class T>
struct remove_reference;
template <typename T>
struct remove_reference {
  using type = T;
};

  template <typename T>
  struct remove_reference<T&> {
  using type = T;
};

请教大神之后,得到在有关报错的代码行的remove_reference之前添加:: 发现错误解决。

在网上查找::相关作用:

双冒号 :: 操作符被称为域操作符(scope operator),含义和用法如下:

  1. 在类外部声明成员函数。void Point::Area(){};

  2. 调用全局函数;表示引用成员函数变量及作用域,作用域成员运算符 例:System::Math::Sqrt() 相当于System.Math.Sqrt()。

  3. 调用类的静态方法: 如:CDispla

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值