opencv的android.mk,android-opencv 版本下JNI Android.mk文件的书写

不能利用 include $(all-subdir-makefiles)

会报重复引用的错误。

AndroidNDK:Tryingto define local module 。。。opencv。

故放弃采取分文件夹写.mk文件的策略。

参考以下工程:

http://code.google.com/p/android-opencv-panorama/source/browse/android/pano/jni/Android.mk

解决方案如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OPENCV_CAMERA_MODULES:= off

include ../includeOpenCV.mk

ifeq ("$(wildcard $(OPENCV_MK_PATH))","")

#try to load OpenCV.mk from default install location

include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk

else

include $(OPENCV_MK_PATH)

endif

NEAR_C_INCLUDES := $(LOCAL_C_INCLUDES)

NEAR_STATIC_LIBRARIES := $(LOCAL_STATIC_LIBRARIES)

NEAR_CFLAGS := $(LOCAL_CFLAGS)

########################

第一个。。。

############第二个############

include $(CLEAR_VARS)

LOCAL_C_INCLUDES := $(NEAR_C_INCLUDES)

LOCAL_STATIC_LIBRARIES := $(NEAR_STATIC_LIBRARIES)

LOCAL_CFLAGS := $(NEAR_CFLAGS)

。。。

P:

Java.lang.UnsatisfiedLinkError.

cannot load library:...

Ans:

Best guess with what information you have provided, The library you are trying to load needs some dependencies to be loaded before it.

For example:

System.loadLibrary("bullet");

System.loadLibrary("irrlicht");

System.loadLibrary("gamescript");

gamescript library needs other 2 library to be loaded before it. Otherwise, it gives me the same error you have mentioned.

若为动态库,  需要注意在java层代码里加载相关的每个动态库!!!

/**

* Loads Native Libraries

*/

static{

System.load("/data/data/net.pandorica.opencv.pano/lib/libprecomp.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libutil.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libmatchers.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libautocalib.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libblenders.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libexposure_compensate.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libmotion_estimators.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libseam_finders.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libwarpers.so");

System.load("/data/data/net.pandorica.opencv.pano/lib/libopencv_stitcher.so");

}

若为静态库, 注意必须是+=,要不然报错!

Be careful with the following line, it should be like this:

LOCAL_STATIC_LIBRARIES+=libfastcv

not like

LOCAL_STATIC_LIBRARIES := libfastcv

类似:

http://stackoverflow.com/questions/7346580/problem-using-opencv2-3-1-with-android-native-activity

I solved the problem there. It was my fault (as usual xD) the problem was I was writting in my Android.mk this line: LOCAL_STATIC_LIBRARIES := android_native_app_glue, instead of this line: LOCAL_STATIC_LIBRARIES += android_native_app_glue. I needed the "plus" symbol, in order to add the new library and not deleting the previously loaded. Thanks anyway!!

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

siox error:

expected unqualified-id before numeric constant   -Y _D 变量重新命名,用_YPoint _DPoint 代替!

今天编译库的时候出现这个问题unqualified-id before numeric constant,是因为变量重复定义了,主要是变量与宏定义同名了,及以下模式:

一个头文件定义一个接口体,

class XXXClass{

const static int MAX_PATTERN_NUM = 1024;

然后在另外一个文件定义宏如下:

#define  MAX_PATTERN_NUM 100

这时就会出现以上的错误

Linux gcc 编译出错   “expected unqualified-id before numeric constant ”

原因很可能是所有大写的名字常常被用于预处理宏,真的需要采用常用的习惯的命名原则,不然真不好查。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Installation error: INSTALL_FAILED_INSUFFICIENT_STORAGE

解决办法:1. 把以前的早版本 apk文件卸载

进入菜单settings->applications->mange

applications-> select theapplication->select "unistall".

2.

把以前的apk文件都给删除了。删除方法:命令 进入tools文件夹下,

adb shell

cd data

cd app

ls,就可以看见之前的apk文件,用rm文件名,就可以把它删除。(模拟器要处在运行的状态下)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Android用ImageView显示本地和网上的图片

/**

* 加载本地图片

* http://bbs.3gstdy.com

* @param url

* @return

*/

public static Bitmap getLoacalBitmap(String url) {

try {

FileInputStream fis = new FileInputStream(url);

return BitmapFactory.decodeStream(fis);

} catch (FileNotFoundException e) {

e.printStackTrace();

return null;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值