博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Tesseract-OCR】在VS2012环境下调用API方法---注意避免名字冲突
阅读量:6215 次
发布时间:2019-06-21

本文共 2535 字,大约阅读时间需要 8 分钟。

 

         由于在VS2012中使用OpenCV可以得到插件ImageWatch.vsix的支持,查看图像非常方便,所以一直想在VS2012环境下把Tesseract-OCR融合进来,但是这一错误折腾了我好久

       ...\tesseract-ocr\include\tesseract\tesscallback.h(1011): error C2872: “remove_reference”: 不明确的符号。   

       后来终于闹明白这是名字冲突了: 都是因为 using namespace std;  出现在 #include "baseapi.h"  前面而惹的祸!所以需要小心避开!!!

        其它的使用可以参见我的另一博客:http://blog.csdn.net/zfdxx369/article/details/9899347

以下记录了我之前的辛苦探索,权且保留,以之纪念。

由于在VS2012中使用OpenCV可以得到插件ImageWatch.vsix的支持,查看图像非常方便,所以一直想在VS2012环境下把Tesseract-OCR融合进来,继VS2010环境下研究成功之后,更是增加了尝试的动力。

在后来的摸索中发现,VS2010环境下新建的基于SDI的MFC竟然不能正常运行,提示与直接在VS2012下的一样:\tesseract-ocr\include\tesseract\tesscallback.h(1011): error C2872: “remove_reference”: 不明确的符号。   

于是,赶紧在VS2012下新建一个win32控制台应用,结果竟然能运行! 只是有条警告:\tesseract-ocr\include\tesseract\strngs.h(61): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\string.h(191) : 参见“strncpy”的声明

然后在VS2012下尝试MDI,尽量使用向导的默认参数,配置好,F7,有条错误:\tesseract-ocr\include\tesseract\strngs.h(61): error C4996: 'strncpy': This function or 

variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.  See online help for details.
1>          c:\program files (x86)\microsoft visual studio 11.0\vc\include\string.h(191) : 参见“strncpy”的声明

google获得解决方法:

 

If you don't want to pollute your source code (after all this warning presents only with Microsoft compiler), add _CRT_SECURE_NO_WARNINGS symbol to your project settings via "Project"->"Properties"->"Configuration properties"->"C/C++"->"Preprocessor"->"Preprocessor definitions".

Also you can define it just before you include a header file which generates this warning. You should add something like this

#ifdef _MSC_VER#define _CRT_SECURE_NO_WARNINGS#endif

And just a small remark, make sure you understand what this warning stands for, and maybe, if you don't intend to use other compilers than MSVC, consider using safer version of functions i.e. strcpy_s instead of strcpy.

结果,竟然也能成功使用 Tesseract-OCR !

由此,我意识到,工程向导中的哪个参数设置存在问题,故而使得我原先的SDI不能应用成功,再行新建一个SDI就有可能解决这个问题! 于是,在新建立新的SDI时,尽量保持默认参数配置,有修改的有:应用程序类型为单个文档; 项目类型为MFC标准;生成的类中的***View类的基类改为CFormView。  配置好,F7, 也是出现上面的strncpy错误,快速解决, 再F7,竟然成了!  然后再加入, OpenCV相关东西,也像是没有冲突!

事情竟然就是这样诡异地解决了!

经验如下:

1, 多多尝试,问题总能解决,关键是变化条件

2,工程建立的时机和向导参数选择很重要,应该多多学习体会。  工程类型之间差异巨大! 其实,新旧SDI的在向导中的参数也差不太多,关键是工程的建立时机, 老的是在安装Tesseract-OCR之前, 新的之后, 估计在创建过程中继承了“不可见”的参数, 也有可能我有尝试的过程中动了哪个参数,以使得新的得以正确运行。

总之,事情比较诡异!

 

 

你可能感兴趣的文章
Python全栈 Web(Flask框架、CRUD、聚合分组)
查看>>
【最佳实践】使用BYOK密钥加密OSS中对象
查看>>
Scrapy实战-爬取豆瓣漫画
查看>>
[剑指offer] 矩阵中的路径
查看>>
log4j2配置
查看>>
07.Java基础(泛型)
查看>>
自制操作系统Antz day11——实现shell(下)命令响应
查看>>
MyBatis 笔记
查看>>
常见浏览器User-Agent大全
查看>>
第七章:Redis 位图bitmap&基数统计HyperLogLog
查看>>
声优直播互动平台克拉克拉获1.2亿元融资,将布局虚拟偶像互动
查看>>
poj 1154 letters (dfs回溯)
查看>>
php缓冲区与header函数之间的秘密
查看>>
Xcode 10: Build input file double-conversion cannot be found
查看>>
润乾V5与springBoot集成
查看>>
2018-07-26雨
查看>>
新的 TLS 加密破坏攻击也会影响新的 TLS 1.3 协议
查看>>
情人节·送什么给你的程序员男友?
查看>>
玩转算法面试(一)
查看>>
Tomcat工作原理
查看>>