Cygwin编译自己定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file
今天受命帮师弟调个OpenCV4Android 识别银行卡的程序,版本号为OpenCV4Android2.4.9,使用方式为前文介绍的第一种方式,即通过jni调用opencv。如杂家前文所述,配套的NDK应使用较高版本号的android-ndk-r9d。它的安装非常easy,解压缩后环境变量设置到Path就ok:D:\ProgramFile\android-ndk-r9d;
但遗憾的是,相同的程序相同的配置在一台PC上通过Cygwin编译一切ok。但在新的一台电脑上却出现例如以下错误:
Android NDK:ERROR:jni/Android.mk:LOCAL_SRC_FILES points to a missing file
Android NDK:Check that ././../libs/armeabi-v7a/libopencv_contrib.a exists or that its path is correct
/cygdrive/d/ProgramFiles/android-ndk-r9d/build/core/prebuilt-library.mk:45***Android NDK:Aborting.停止
说是mk文件中LOCAL_SRC_FILES指向的有找不到的文件,但其实mk里配置一切正常。最让人无语的是说libopencv_contrib.a exists or that its path is correct,好好的怎么就牵涉到libopencv_contrib.a了,并且这个文件是一定存在的。
经过研究,链接:http://zhidao.baidu.com/link?url=Fv_nHirMNwBRqeFAtfM-gQWSBFVXcpUhOfvnv_Ry5m_y1dMRA7kTUMOldb2GAQgcAxzUKQVRRBlbg8nx922cbLDBD8DC9kPXSqQT293FUQa 也是遇到的相同的问题。另外,国外的http://stackoverflow.com/questions/20014555/fail-to-build-opencv也是相同的问题,此链接说:
Error clearly show libopencv_contrib.a
file is missing. NDK looking at /cygdrive/c/android-ndk-r9b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/user/libs/armeabi-v7a/
location, But file not found. You can do is either include above path in library search path for example: LD_LIBRARY_PATH in Linux or %PATH% in windows. OR you can copy libopencv_contrib.a
file to that location. My suggestion would be include library path.
libopencv_contrib.a这个文件不存在,一切都是由于找不到此库引起的。看着非常有道理,顺着这个思路摸索了两个小时无解,根本就是扯淡啊。最后杂家计上心来,不是说NDK自r7之后都能够不用Cygwin了,杂家在前文里也有介绍配置方法,就是把NDK安装文件夹下的ndk-build.cmd在Eclipse里新建一个Builder然后链接进去。当时认为不太好用,主要是何时编译不受控制。但通过今天,感觉此种配置方法带来的开发体验远远超过Cygwin啊!通过此方法,完美攻克了opencv_contrib: LOCAL_SRC_FILES points to a missing file这个错误。以下附上具体说明:
1、选中带jni的project,按下alt+enter键,左側栏找到Builders,然后点new,选择Program点ok。
2、之后就是设置这个新建的Builder,名字命为NDK_Builder.在Location里将ndk-builder.cmd的路径填进去:D:\ProgramFile\android-ndk-r9d\ndk-build.cmd
在Working Directory里就选择当前这个project,表示NDK_Builder仅仅在当前project有效。选中后,自己主动会填写:${workspace_loc:/ScanBankCard}
3、在Refresh栏,选择第三个。
4、在Build Options里,选择After a “Clean”、During manual builds,During auto builds这个选项最好不要选,否则的话在jni里写一句话保存一下,就自己主动编译一次,这个不太友好。仅仅选择文中的两项就ok了,想要编译so的话点clean project或者手动编译就可以。
备注:有时候更改了jni里的c代码,一定要clean一下整个project,否则有可能编译不进去。
官方关于NDK和OpenCV4Android配置的指导文档在这里:http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/android_binary_package_using_with_NDK.html 能够參考下。
备注:
1、官方文档里配置了Refresh栏的libs文件夹,这个不配置也ok。
2、我之前的博客里说不能配置Cygwin的路径D:\ProgramFile\cgwin\bin;到Path里,看来是错误的。这个必需要配置。能够在我的电脑环境变量里配,也能够參考官方的文档在新建的Builder的第三个设置栏Environment里加入。
3、虽然如此,Cygwin还是值得一装的,有时用它的grep命令搜索一些信息非常方便,尤其看第三方代码时。
欢迎加入OpenCV4Android联盟QQ群:66320324 备注:yanzi
------------------------本文系原创,转载注明作者yanzi1225627
Cygwin编译自己定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file的更多相关文章
- 使用VC6.0编译C++代码的时候报错:fatal error C1071: unexpected end of file found in comment(Mark ZZ)
fatal error C1071: unexpected end of file found in comment(Mark ZZ) 今天在一论坛上看到一人发帖: 『最近遇到一个奇怪的问题,代码中的 ...
- Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED
Python virtualenv安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip install virtua ...
- 备库搭建后,进入备库报错psql: FATAL: the database system is starting up
备库搭建后,进入备库报错psql: FATAL: the database system is starting up 原因:备库配置文件没有hot_standby = on mast ...
- Python djangorestframework安装库报错SSL: CERTIFICATE_VERIFY_FAILED
Python djangorestframework 安装库报错SSL: CERTIFICATE_VERIFY_FAILED 问题描述 使用pip按照virtualenv报错,如下: pip inst ...
- 【opencv】ubuntu opencv imshow()报错
错误提示: ubuntu opencv imshow() 报错 windows.cpp报错 the function is not implemented If you are on Ubuntu o ...
- yum install php-gd 安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64 大
yum install php-gd安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64大概的 ...
- 【故障处理】 DBCA建库报错CRS-2566
[故障处理] DBCA建库报错CRS-2566 PRCR-1071 PRCR-1006 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读和注意事项 各位技术爱好者, ...
- Javac编译找不到符号,报错
Javac编译找不到符号 报错 找不到符号 如果是两个.java有调用关系,需要同时编译 首先我检查了下代码,发现并没有问题,然后将A.java文件的内容复制到D.java中,发现程序能正常运行,而之 ...
- webRTC中回声消除(AEC)模块编译时aec_rdft.c文件报错:
webRTC中回声消除(AEC)模块编译时aec_rdft.c文件报错. 原因是: 局部变量ip跟全局变量冲突的问题,可以将局部变量重新命名一下,就可以通过编译了. aec_rdft.c修改以后文件代 ...
随机推荐
- [Oracle] - 性能优化工具(4) - AWRDD
AWRDD是用于比較两个AWR快照,从而获得不同一时候期的性能. 运行例如以下语句获得AWRDD: @?/rdbms/admin/awrddrpt.sql 2025 23 2月 2014 07:12 ...
- java中由类名和方法名字符串实现其调用【反射机制】
js里通过eval()函数,在知道某个方法名是可以实现调用该方法,那么在java里边又怎么实现的呢? java里边是通过反射机制来实现,代码如下: import java.lang.reflect.M ...
- 用XAML做网页!!—边栏与页脚
原文:用XAML做网页!!-边栏与页脚 此次我们来设计边栏和页脚,首先从页脚开始,其代码很简单: <Border x:Name="Footer" BorderBrush=&q ...
- vb.net WPF webbrowser window.close 关闭后不触发 WindowClosing 事件 WNDPROC解决方式
vb.net WPF webbrowser window.close 关闭后不触发 WindowClosing 事件 WNDPROC解决方式 #Region "WPF 当浏览器窗体关闭 ...
- bash,bg,bind,break,builtin,caller,compgen, complete,compopt,continue,declare,dirs,disown,enable,eval,exec,expo
bash,bg,bind,break,builtin,caller,compgen, complete,compopt,continue,declare,dirs,disown,enable,eval ...
- JVM最多支持多少个线程?
JVM最多支持多少个线程? McGovernTheory在StackOverflow提了这样一个问题: Java虚拟机最多支持多少个线程?跟虚拟机开发商有关么?跟操作系统呢?还有其他的因素吗? Edd ...
- C++结构体:默认构造函数,复制构造函数,重载=运算符
C++结构体提供了比C结构体更多的功能,如默认构造函数,复制构造函数,运算符重载,这些功能使得结构体对象能够方便的传值. 比如,我定义一个简单的结构体,然后将其作为vector元素类型,要使用的话,就 ...
- android 图片浏览器 demo
先上效果图,本demo 会逐步完好 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYTU2NTczMDE2NjEz/font/5a6L5L2T/fontsi ...
- UVA - 12232 Exclusive-OR (并查集扩展偏离向量)
Description You are not given n non-negative integersX0,X1,..., Xn-1 less than220, but they do exist ...
- HDU 1201
18岁生日 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...