菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
92
0

JNI支持C++与C的区别

原创
05/13 14:22
阅读数 57253

1. C++的代码后缀是".cpp"

2. 在JNI.h 文件中有两套代码。一套是支持c的, 一套是支持JNI的。

  JNI。h地址:mac ▸ 用户 ▸ douj ▸ Documents ▸ android-ndk-r10b ▸ platforms ▸ android-8 ▸ 

  JNI中针对C的代码是:

  jstring     (*NewStringUTF)(JNIEnv*, const char*);

 

  C中调用方式:

  (*env)->NewStringUTF(env,"haha from c");

  JNI中针对C++的代码是:

    jstring NewStringUTF(const char* bytes)

    { return functions->NewStringUTF(this, bytes); }

 

  C++中调用方式

JNIEXPORT jstring JNICALL Java_cn_itcast_cpp_DemoActivity_helloInC
  (JNIEnv * env, jobject obj){
     return      env->NewStringUTF("haha from c");
}

 

 

3. 修改 Android.mk 文件

  LOCAL_PATH := $(call my-dir)

   include $(CLEAR_VARS)
   #针对C++的支持,标记c++文件的扩展名名称
   LOCAL_CPP_EXTENSION := cpp 
   
   #打的包模块名称。 会根据这个生成libHello.so库。
   LOCAL_MODULE    := Hello
   LOCAL_SRC_FILES := Hello.cpp #需要编译的相关C、c++ 代码
   # 日志支持
   LOCAL_LDLIBS += -llog
   include $(BUILD_SHARED_LIBRARY)

 4. C++的优势

  不需要的函数参数名称可以不命名参数。

发表评论

0/200
92 点赞
0 评论
收藏
为你推荐 换一批