1JavaC++混合编写:

使用JNI(Java本地调用)

实例:cocos2dx/platform/android/jni对应目录cocos2dx/platform/android/java

constchar*getConstStrRetuen(constchar*funcName){JniMethodInfot;std::stringret;if(JniHelper::getStaticMethodInfo(t,"org/cocos2dx/lib/Cocos2dxHelper",funcName,"()Ljava/lang/String;")){jstringretFromJava=(jstring)t.env->CallStaticObjectMethod(t.classID,t.methodID);constchar*str=t.env->GetStringUTFChars(retFromJava,0);ret=str;t.env->ReleaseStringUTFChars(retFromJava,str);t.env->DeleteLocalRef(t.classID);}returnret.c_str();}constchar*getDEVICENAME(){returngetConstStrRetuen("getDeviceName");}

如上,调用JniHelper::getStaticMethodInfo(JniMethodInfo&,java代码文件,方法名,参数返回值定义)

org/cocos2dx/lib/Cocos2dxHelper.java文件存在一个方法

publicstaticStringgetDeviceName(){try{Stringmanufacturer=Build.MANUFACTURER;Stringmodel=Build.MODEL;if(model.startsWith(manufacturer)){returncapitalize(model);}else{returncapitalize(manufacturer)+""+model;}}catch(Exceptione){return"";}}

返回值是String

JNI的参数返回值格式:“(参数)返回值”

类型如下表:

C++类型

Java类型

描述符

bool boolean Z
byte byte B
char char C
short short S
int int I
long long J
float float F
double double D
string

Ljava/lang/String;

Lfully-qualified-class;

[] [] [ type

后两种是泛用类型,Java自定义类型和数组

举例:C++函数描述:longf(intn,Strings,int[]arr);JNI描述为:(ILjava/lang/String;[I)J

函数JniHelper::getStaticMethodInfo以及JniHelper::getMethodInfococos2dx\platform\android\jni\JniHelper.cpp文件中有实现。


2OCC++混合编写:

OC是概念的C语言,目前GCCClang都支持OCC++混合编译,OC的文件后缀名称是.mm。可以在C++.h文件创建类以及方法的声明,在对应.mm文件实现类和声明的方法。

例如,在CCDevice.h文件定义了staticconstchar*getDeviceName();实现如下:

constchar*CCDevice::getDeviceName(){NSString*strName=[[UIDevicecurrentDevice]name];return[strNameUTF8String];}


更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Android(安卓)studio插件大全
  6. android BannerView实现自动轮播广告的用法(参考自github)
  7. Android(安卓)签名和发布
  8. Andorid中xml资料汇总
  9. Android调用系统内部的下载程序下载文件(二)

随机推荐

  1. Android中,把XML文件转换成Object对象的方
  2. android:制作system.img(yaffs2)镜像
  3. Android上的模拟点击
  4. android实践项目一实现简单的验证码和spi
  5. android支持多行的radiogroup
  6. Android解决父控件拦截子控件手势滑动事
  7. android手机客户端上传文件,java servlet
  8. Android(安卓)模拟新浪微博-随便看看栏目
  9. android 多点触控
  10. Android(安卓)通讯录中用到的关于按名字