天天看点

Cygwin下编译自己的OpenASURF共享库

依赖条件:

0. Android sdk

1. 支持STL的crystax's patched ndk

2. OpenCV-Android

android ndk 1.6 不支持大部分的STL去创建本地库,你需要使用一种改进的NDK,地址如下:

http://crystax.net/androidndk.php

我搭建的开发环境是32位的window7 + windows 的crystax ndk

只要将它解压并cd到相应目录就可以像往常那样使用ndk了。

ps:还可以使用std::vector<IpPoint> 等.

用git获取 OpenCV-Android(svn也可以)

git clone: git://github.com/billmccord/OpenCV-Android

ndk编译生成以下opencv共享库

Ok. 我使用 swig 生成 jni wrappers...如果你没有,就去下载一个swig 。虽然OpenASURF的swig wrappers 已经生成了,但是如果你更改了代码,需要重新运行jni目录中的swig.sh.

接着我们开始看OpenASURF工程,打开Android.mk,修改以下两个变量(因为每个人放置的目录可能都不一样)

LOCAL_LDLIBS

OPENCV

由于我的OpenCV-Android项目和OpenASURF工程都是放在我自己定义的NDK/apps目录下,所以

(NDK_CV 是我export的/cygdrive/C/Android/android-ndk-r4-crystax/)

我的定义如下:

LOCAL_LDLIBS +=-L$(SYSROOT)/usr/lib -L$(NDK_CV)/apps/OpenCV-Android/trunk/obj/local/armeabi -lopencv -lcxcore -lcv -lcvaux -lcvml -lcvhighgui \

-llog  \

OPENCV := ../OpenCV-Android/trunk/jni

现在就可以在OpenASURF根目录中运行$NDK/ndk-build了

这将会在 lib/armabi/ 目录中生成 OpenSURF.lib. 注意还要确保把 opencv.lib复制到该目录下.

继续阅读