Cygwin编译自定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file
来源:互联网 发布:金手指炒股软件 编辑:程序博客网 时间:2024/05/21 12:45
今天受命帮师弟调个OpenCV4Android 识别银行卡的程序,版本为OpenCV4Android2.4.9,使用方式为前文介绍的第一种方式,即通过jni调用opencv。如杂家前文所述,配套的NDK应使用较高版本的android-ndk-r9d。它的安装很简单,解压缩后设置环境变量到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的工程,按下alt+enter键,左侧栏找到Builders,然后点new,选择Program点ok。
2、之后就是设置这个新建的Builder,名字命为NDK_Builder.在Location里将ndk-builder.cmd的路径填进去:D:\ProgramFile\android-ndk-r9d\ndk-build.cmd
在Working Directory里就选择当前这个工程,表示NDK_Builder只在当前工程有效。选中后,自动会填写:${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
- cocos 编译LOCAL_SRC_FILES points to a missing file
- cocos编译android时出现LOCAL_SRC_FILES points to a missing file
- 【Cocos2dx-lua 3.11.1】打包错误——LOCAL_SRC_FILES points to a missing file
- 从svn上下载的cocos2d-x工程报错 LOCAL_SRC_FILES points to a missing file *** Android NDK: Aborting . Stop.
- OpenCV 3.1.0 + opencv_contrib编译(Windows)
- OpenCV 3.2.0 + opencv_contrib编译(Windows)
- Mac上编译安装 opencv和opencv_contrib
- error: address doesn't contain a section that points to a section in a object file
- Opencv_contrib编译错误file DOWNLOAD cannot open file for write.
- 【OpenCV】OpenCV 3.1.0 + opencv_contrib编译(Windows)
- Visual Studio 2015编译安装OpenCV 3.0和opencv_contrib
- Win10+VS2015环境下编译 OpenCV 3.1和opencv_contrib
- Visual Studio 2015编译安装OpenCV 3.0和opencv_contrib
- 如何编译带有extra modules(opencv_contrib)的opencv源码
- Windows平台下编译OpenCV扩展的opencv_contrib
- Visual Studio 2015编译安装OpenCV 3.0和opencv_contrib
- 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib
- NameNode跟secondarynamenode的执行过程
- 线段树(树状数组)hdu4267
- 奇异值分解
- CONFIG_IKCONFIG_PROC=y
- hdu 1247 Hat’s Words 字典树
- Cygwin编译自定义OpenCV库报错:opencv_contrib: LOCAL_SRC_FILES points to a missing file
- Android 开发尝试总结二:Android版HelloWorld项目文件结构分析
- 创建基于wicket的web项目(二)-常用控件
- UVA - 10474 Where is the Marble?
- (六)8天快速掌握Android视频教程_电话拨号器
- python的列表解析
- 深入Volley(一)volley缓存文件结构
- Linux Socket编程(不限Linux)
- AIX获取N天前系统日期及应用日志备份脚本