在cocos2d引擎中安卓开发引用第三方库(如Opencv)

对于一个只懂得如何用Java去调用C++来实现某一种效果的初学者来说,Android编程中jni目录下的Android.mk这

样的配置文件几乎是完全有理解障碍的。
Android.mk是eclipse告诉它的插件NDK如何去编译C语言编写的源文件,有点像linux下编译C程序的makefile
,其实差不多。第一次见到其实是吓一跳的。不过还好上网能找到点相关的东西。其实Android编程一般是用不到Android.mk,因为Android的SDK已经功能很强大了,不需要C++什么事。但是对于游戏开发而言,为了保证应
用的高效等一些性能,还是经常要使用C++语言去写,或者说游戏开发引就是C++写的。好了,废话有点多,进
入正题吧!(PS:只是些基础,几个月以前接触的,不知道还记得多少,仅仅只是记录,怕忘了)
LOCAL_PATH := (callmydir)//C++include (CLEAR_VARS)
LOCAL_MODULE := opencv_java //引用的动态库的模块名,这里我需要调用opencv(开源图像处理平台)
的动态链接库,
LOCAL_SRC_FILES := libso/libopencv_java.so //库名
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
//下面是编译opencv的环境配置
LOCAL_ARM_NEON := true
OpenCV_INSTALL_MODULES:=on
OPENCV_CAMERA_MODULES:=off
//在c++中调用opencv要想在eclipse中编译通过必须添加opencv的配置文件OpenCV.mk,不然NDK在编译的
//是安卓版(只有在这个版本才有Opencv.mk)的
include $(LOCAL_PATH)/../../sdk/native/jni/OpenCV.mk
//这里就是我的游戏中用到的cocos2d游戏开发引擎需要的原文件目录
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)

//指定游戏编译模块
LOCAL_MODULE := cocos2dcpp_shared

//C程序生成的动态链接库,其实在这个游戏中Android部分的代码就是在调用下面用
//C++写的源程序生成的库,自己只是一个包装
LOCAL_MODULE_FILENAME := libcocos2dcpp

//这里就是需要编译C++的源程序文件了。
LOCAL_SRC_FILES := hellocpp/main.cpp \
               ../../Classes/AppDelegate.cpp \
               ../../Classes/HelloWorldScene.cpp \
               ../../Classes/GameLoadResource.cpp \
               ../../Classes/GameDescribeSence.cpp \
               ../../Classes/GameSence.cpp \
               ../../Classes/makeMouse.cpp \
               ../../Classes/makeMouseSence.cpp \
               ../../Classes/mouse.cpp \
               ../../Classes/OperationSence.cpp

//这里是cpp文件引用的头文件所在的目录
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
                $(LOCAL_PATH)/../../sdk/native/jni/include


# _COCOS_HEADER_ANDROID_BEGIN
# _COCOS_HEADER_ANDROID_END
//
LOCAL_LDLIBS    += -lm -llog 
//以静态的模式加载.a库文件
LOCAL_STATIC_LIBRARIES := cocos2dx_static
LOCAL_SHARED_LIBRARIES := opencv_java


# _COCOS_LIB_ANDROID_BEGIN
# _COCOS_LIB_ANDROID_END

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
//加载.so库
LOCAL_SHARED_LIBRARIES := opencv_java 

$(call import-module,.)//调用库

# _COCOS_LIB_IMPORT_ANDROID_BEGIN
# _COCOS_LIB_IMPORT_ANDROID_END

这些写完之后,还需要在Application.mk中指定编译C++的编译选项比如:
APP_CPPFLAGS := -frtti  -fexceptions -DCC_ENABLE_CHIPMUNK_INTEGRATION=1 -std=c++11 -fsigned-char
我完全不懂它是什么意思,这里就不献丑了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值