当前位置: 首页 > news >正文

十八个免费的舆情网站wordpress是建站工具 还是语言

十八个免费的舆情网站,wordpress是建站工具 还是语言,seo网络营销外包,公司装修便宜JNI的两种注册机制:静态注册和动态注册. 一、JNI介绍 JNI(Java Native Interface),即Java本地接口,JNI是Java调用Native 语言的一种特性。通过JNI可以使得Java与C/C机型交互. 方式: 静态注册动态注册:需要提供Java中…

JNI的两种注册机制:静态注册和动态注册.

一、JNI介绍

JNI(Java Native Interface),即Java本地接口,JNI是Java调用Native
语言的一种特性。通过JNI可以使得Java与C/C++机型交互.

方式

  • 静态注册
  • 动态注册:需要提供Java中Native方法的方法签名和Native层中对应的实现函数。

二、静态注册

要求C/C++层的函数名符合某种特定的要求:包含Java中Native方法的目录信息和方法名。

Example
Java

package cn.com.codingce.ndkpractice;public native String stringFromJNI();

C++

extern "C"
JNIEXPORT jstring JNICALL
Java_cn_com_codingce_ndkpractice_MainActivity_stringFromJNI(JNIEnv *env, jobject thiz) {std::string hello = "Hello from C++";//crashTest();return env->NewStringUTF(hello.c_str());
}

按照以上规则进行命名,在调用到Native的方法时,JVM会去查找是否存在对应函数名的函数,以此实现静态注册。

三、动态注册

动态注册相对于静态注册,优点是不再根据特定路径查找函数的实现,带来两个好处:

  • 没有了冗杂的函数名,适用于大型项目开发。
  • 由于不再根据Native函数查找对应的JNI层函数,所以首次调用速度比静态注册快。

开发者需要自行提供Java层和C/C++层中的映射关系。
一种可行的方法是基于JNI重载JNI_OnLoad(),在其中对函数进行动态注册。

Example
Java

package cn.com.codingce.ndkpractice.utils;public static native void logInit(String logFilePath, String logName, int logfileLevel, int logScreenLevel);

C++

此步骤涉及到如何获取Java函数。

static JNINativeMethod nativeUtilsMethods[] = {{"logInit",  "(Ljava/lang/String;Ljava/lang/String;II)V", (void *) localLogInit},{"logJni",   "(ILjava/lang/String;)V",                    (void *) logJni},{"logClose", "()V",                                       (void *) logClose},
};static void nativeLogUtilsRegisterNatives(JNIEnv *jniEnv) {if (jniEnv == nullptr) {return;}jclass clazz = nullptr;do {clazz = jniEnv->FindClass("cn/com/codingce/ndkpractice/utils/LogUtils");if (clazz == nullptr) {diagnosis_assert(!"FindClass LogUtils error!");break;}if (jniEnv->RegisterNatives(clazz, nativeUtilsMethods,std::extent<decltype(nativeUtilsMethods)>::value) != 0) {diagnosis_assert(!"RegisterNatives error!");break;}} while (false);if (jniEnv->ExceptionCheck() == JNI_TRUE) {jniEnv->ExceptionClear();}if (clazz != nullptr) {jniEnv->DeleteLocalRef(clazz);}
}

重载JNI_OnLoad函数,并在其中调用nativeLogUtilsRegisterNatives函数

JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) {JNIEnv *jniEnv{nullptr};if (vm->GetEnv((void **) &jniEnv, JNI_VERSION_1_6) != JNI_OK) {diagnosis_assert(!"JNI version error!");return JNI_EVERSION;}nativeLogUtilsRegisterNatives(jniEnv);return JNI_VERSION_1_6;
}
http://www.yayakq.cn/news/676893/

相关文章:

  • 政务网站开发合同wordpress如何改标题
  • 英语外贸网站建设中信建设招聘
  • 如何推广自己的微信公众号科学新概念seo外链
  • 朝阳网站开发联系电话安徽省建设厅官方网站黄世山
  • 如何做闲置物品自己的网站定制自己的软件
  • 帝国cms网站地址WordPress 发表文章api
  • 京东电子商务网站的建设wordpress 描述字段
  • 网站开发费用属无形资产吗珠海网站开发公司
  • 视频网站建设公司排名装修公司网站建设解决方案
  • 自己的网站做app网站制作咨询
  • 建设网站大概多少钱怎么查网站的浏览量
  • 响应式网站模板 开源网站开发谷歌浏览器js不更新
  • 建设部网站资质查询学网站开发哪个好
  • 网站的优化用什么软件下载网站过程
  • 阜阳网站建设工作室电子商务都学什么
  • 泉州最专业手机网站建设开发百度推广营销怎么做
  • 南通网站设计制作公司龙华建设网站
  • 免费做思维导图的网站wordpress 充值卡
  • 汽车网站的建设方向做网站赔钱了
  • 万能浏览器有哪些长沙企业seo服务
  • 杭州网站建设caiyiduo地产平面设计主要做什么
  • 北京正规网站建设经历内蒙古建筑培训网官网
  • 查询网站空间c 网站购物车怎么做
  • 做国外有那些网站推介网手机版
  • 网络优化网站建设wordpress客户端配置
  • 58同城兰州网站建设高端网站设计高端网站制作
  • 网站开发报价标准wordpress数据库用户名密码忘记
  • 网站底部版权信息免费咨询律师不收费
  • 杭州高端网站建设公司做微网站的第三方登录界面
  • 如何做网站的内链和外链石家庄设计公司排名