zoukankan      html  css  js  c++  java
  • Android 与 C++ 之间纠缠

    1)游戏开发中,引擎层多用C++来实现,但是有时候为了集成SDK,调用Android原生的时候,难免要思考——C++层如何去调用Java层?

    2)Android层调用C++库去完成一些功能也使常见的。开发中难免会思考怎么去用Java调用C++的问题。

    最近的项目需求是Java调用C++的代码,来完成一些功能。

    案例1.C++如何调用Java层。

    在网上粗略的了解了一下。

    JniMethodInfo、JniHelper的C++类来实现,通过导入相关头文件,引入到项目中。

    调用的时候需要注意C++参数的传递,方法签名,以及Java返回的值的接收。

    参考:http://www.himigame.com/android-game/725.html

    略过~

    案例2.Java层调用C++的代码。

    Java调用C++的代码是通过调用.so包(C++文件编译后的文件)来实现的。.so包的生成是通过Android-ndk库的支持。

    在创建的android项目中,首先需要创建jni文件夹。NDK编译需要jni/android.mk文件,jni/application.mk文件。

    android.mk文件用来想ndk说明需要编译的c文件有哪些,application.mk文件用来说明需要编译的abi,也就是CPU的类型。

    可以参考android/ndk下的samples/hello-jni项目。

    调用自己的c++文件,首先创建自己的C++文件,然后添加到android.mk文件中,

    向ndk表示,我这个自定义的C++文件也将参加到程序编译中去、并供Java来调用使用。

    上张图片说说:

    cocos2dx游戏也是通过这样的方法,在android手机端完成了运行。

    例如:android程序启动,从一个Activity进入后,导入静态库,然后就开始调用跑C++的游戏引擎库来跑游戏了。

  • 相关阅读:
    Notepad++ 配置信息导出导入(快捷键配置导出导入等等)
    SQL 删除重复数据
    PostgreSQL Update 根据B表更新A表
    桌面应用基本创建流程
    Android shape和selector完全总结
    Android 第三方框架之Charts
    java常见五种排序方式
    Objective-c之字典精讲
    OC语言之---NSArray
    Objective-c编程之NSString精讲
  • 原文地址:https://www.cnblogs.com/vokie/p/3814016.html
Copyright © 2011-2022 走看看