水利厅网站集约化建设找网站建设公司好

news/2025/9/24 23:57:27/文章来源:
水利厅网站集约化建设,找网站建设公司好,课程设计报告 网站开发,博远手机销售管理系统app文章目录 一、JNI 注册二、JNI 调用 Java 函数1、实例2、总结3、参考 三、JNI 数据传递四、JNA五、图像传递 一、JNI 注册 JNI 分成静态注册和动态注册 静态注册 cpp 实现 JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *env, jobject… 文章目录 一、JNI 注册二、JNI 调用 Java 函数1、实例2、总结3、参考 三、JNI 数据传递四、JNA五、图像传递 一、JNI 注册 JNI 分成静态注册和动态注册 静态注册 cpp 实现 JNIEXPORT jstring JNICALL Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv *env, jobject thiz) {// ... }Java 中使用 package com.example.hellojni class HelloJni : AppCompatActivity() {// ...override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)// ...binding.helloTextview.text stringFromJNI()}external fun stringFromJNI(): String?companion object {init {System.loadLibrary(hello-jni)}} }动态注册 // 动态注册 namespace android {static jobject android_os_MemoryFile_open(JNIEnv* env, jobject clazz, jstring name, jint length) {// ...} }static const JNINativeMethod methods[] {{native_open, (Ljava/lang/String;I)Ljava/io/FileDescriptor;, (void*)android_os_MemoryFile_open},{native_mmap, (Ljava/io/FileDescriptor;II)I, (void*)android_os_MemoryFile_mmap},{native_munmap, (II)V, (void*)android_os_MemoryFile_munmap},{native_close, (Ljava/io/FileDescriptor;)V, (void*)android_os_MemoryFile_close},{native_read, (Ljava/io/FileDescriptor;I[BIIIZ)I, (void*)android_os_MemoryFile_read},{native_write, (Ljava/io/FileDescriptor;I[BIIIZ)V, (void*)android_os_MemoryFile_write},{native_pin, (Ljava/io/FileDescriptor;Z)V, (void*)android_os_MemoryFile_pin},{native_get_size, (Ljava/io/FileDescriptor;)I,(void*)android_os_MemoryFile_get_size} };int AndroidRuntime::registerNativeMethods(JNIEnv* env,const char* className, const JNINativeMethod* gMethods, int numMethods)5分钟理解Android中的JNI原理 二、JNI 调用 Java 函数 JNI 调用 Java 函数主要是在 JNI 中使用反射调用 Java 中的函数。 1、实例 Java代码 package com.my.hawk.jni2;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.TextView;import static java.lang.String.format;public class MainActivity extends AppCompatActivity {TextView tv;// Used to load the native-lib library on application startup.static {System.loadLibrary(native-lib);}Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Example of a call to a native methodtv findViewById(R.id.sample_text);tv.setText(stringFromJNI());nativeInitilize();Button startBt findViewById(R.id.button);startBt.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {nativeThreadStart();}});Button stopBt findViewById(R.id.button2);stopBt.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {nativeThreadStop();}});}public void onNativeCb(int count) {Log.d(Native, onNativeCb count count); // TextView tv findViewById(R.id.sample_text); // tv.setText(format(%s%d, stringFromJNI(), count));tv.post(new Runnable() {Overridepublic void run() {tv.setText(format(%s%d, stringFromJNI(), count));}});}/*** A native method that is implemented by the native-lib native library,* which is packaged with this application.*/public native String stringFromJNI();public native void nativeInitilize();public native void nativeThreadStart();public native void nativeThreadStop(); }JNI代码 #include jni.h #include string #include sstream #include android/log.h #include unistd.hJavaVM *gJavaVm; jobject gJaveObj; static volatile int gIsThreadExit 0;#define LOG(...) __android_log_print(ANDROID_LOG_DEBUG, Native, __VA_ARGS__)static const char *classPath com/my/hawk/jni2/MainActivity;extern C JNIEXPORT jstring JNICALL Java_com_my_hawk_jni2_MainActivity_stringFromJNI(JNIEnv* env,jobject /* this */) {std::string hello Hello from C;return env-NewStringUTF(hello.c_str()); }extern C JNIEXPORT void JNICALL Java_com_my_hawk_jni2_MainActivity_nativeInitilize(JNIEnv *env, jobject thiz) {env-GetJavaVM(gJavaVm);gJaveObj env-NewGlobalRef(thiz); }static void* native_thread_exec(void *arg) {JNIEnv *env;gJavaVm-AttachCurrentThread(env, nullptr);// jclass javaClass env-FindClass(classPath);jclass javaClass env-GetObjectClass(gJaveObj);if (javaClass nullptr) {LOG(Fail to find javaClass);return nullptr;}jmethodID javaCallback env-GetMethodID(javaClass, onNativeCb, (I)V);if (javaCallback nullptr) {LOG(Fail to find method onNativeCb);return nullptr;}LOG(native_thread_exec loop enter);int count 0;while (!gIsThreadExit) {env-CallVoidMethod(gJaveObj, javaCallback, count);sleep(1);}gJavaVm-DestroyJavaVM();LOG(native_thread_exec loop leave);return nullptr; }extern C JNIEXPORT void JNICALL Java_com_my_hawk_jni2_MainActivity_nativeThreadStart(JNIEnv *env, jobject thiz) {gIsThreadExit 0;pthread_t threadId;if (pthread_create(threadId, nullptr, native_thread_exec, nullptr) ! 0) {LOG(native_thread_start pthread_create fail!);return;}LOG(native_thread_start success); }extern C JNIEXPORT void JNICALL Java_com_my_hawk_jni2_MainActivity_nativeThreadStop(JNIEnv *env, jobject thiz) {gIsThreadExit 1;LOG(native_thread_stop success); }其中的关键获取方法然后通过反射调用 native_thread_exec初始化的时候保存全局 JVM 和 class 对象。 env-GetJavaVM(gJavaVm);gJaveObj env-NewGlobalRef(thiz);2、总结 Android 环境中每个进程只能诞生一个 JavaVM 对象被所有线程共享。在 VM 加载 *.so 程序库时会先调用 JNI_OnLoad() 函数在 JNI_OnLoad() 函数中会将 JavaVM 指针对象保存到 C 层 JNI 的全局变量中。JNIEnv 对象和线程是一一对应的关系;Jvm 和 JNIEnv 释放问题JVM 中 Java Heap 的内存泄漏JVM 内存中 native memory 的内存泄漏从操作系统角度看JVM 在运行时和其它进程没有本质区别。在系统级别上它们具有同样的调度机制同样的内存分配方式同样的内存格局。JVM 进程空间中Java Heap 以外的内存空间称为 JVM 的 native memory。进程的很多资源都是存储在 JVM 的 native memory 中例如载入的代码映像线程的堆栈线程的管理控制块JVM 的静态数据、全局数据等等。也包括 JNI 程序中 native code 分配到的资源。 Local Reference 导致的内存泄漏 3、参考 Android开发实践JNI层线程回调Java函数示例 - 指针空间 - 博客园 JNI开发JNI层新起的函数中C回调函数中调用JAVA层的接口_tingzhushaohua的博客-CSDN博客_jni 回调函数 C通过JNI层回调java函数 - 百度文库 Android NDK开发一 - 简书 jni java 函数指针_java native interface JNI 调用Java方法_我是XiaoYang呀的博客-CSDN博客 三、JNI 数据传递 AndroidJNI调用C自定义类的详细方法_chaoqiangscu的博客-CSDN博客_jni调用c类 Java代码与Jni层之间传递数组byte[]_xiao慕r的博客-CSDN博客_jni传递数组 Android-JNI之数据类型转换_zhezi521的博客-CSDN博客_android jni 类型转换 android ndk 返回字符串,android ndk返回String(字符串)_天才娜娜ln的博客-CSDN博客 小心ReleaseByteArrayElements 中的参数问题_普通网友的博客-CSDN博客 JNIEnv*的常用函数详解 java jni 手册_Java中JNI的使用详解第二篇:JNIEnv类型和jobject类型的解释_发条粽子的博客-CSDN博客 NDK 开发之 Bitmap 的使用-技术圈 Android之OpenCv简单人脸识别功能Bitmap_路和远方的博客-CSDN博客_android opencv 人脸识别 JNI层向Java层传递bitmap | 码农家园 android中通过JNI读取Bitmap文件并调用opencv进行处理_一天到晚游泳的鱼啊鱼的博客-CSDN博客 JNI String类型 - 知乎 JNI 通过形参String返回数据的方法_Cosmo_Wang1989的博客-CSDN博客_jni 形参返回字符串 简介Bitmap、YUVNV21与Bitmap互转_XDK-Net的博客-CSDN博客_bitmap转nv21 bitmap 转换nv21_驱梦人的博客-CSDN博客_bitmap转nv21 JNI层向Java层传递bitmap | 码农家园 计算Java函数的签名 | Android开发实践:JNI函数签名生成器 - 行业资讯 - 肥雀云_南京肥雀信息技术有限公司 native和static native区别_飞鸟_的博客-CSDN博客_jni static 四、JNA JNI便捷开发框架JNA框架之入门一_cy谭的博客-CSDN博客_jna JNI便捷开发框架JNA框架之指针参数Pointer二_cy谭的博客-CSDN博客_jna pointer JNI便捷开发框架JNA框架之引用传递ByReference三_cy谭的博客-CSDN博客 JNI便捷开发框架JNA框架之结构参数体传递四_cy谭的博客-CSDN博客_jna 结构体传参 JNA传递二维指针数组参数给C语言_Xeon_CC的博客-CSDN博客_jna传递数组给c JNA 技术解密_ccfeng2008的博客-CSDN博客_jna原理 jna编程学习 - 走看看 JNA 使用 回调函数 - 博麗靈夢 - 博客园 java高级用法之:JNA中的回调_flydean程序那些事的博客-CSDN博客_jna 回调函数 Jna及如何调试_nanshenjiang的博客-CSDN博客_jna测试 libffi浅析_ayu_ag的博客-CSDN博客_libffi 使用 libffi 实现 AOP_diaoju3333的博客-CSDN博客 【libffi】动态调用定义C函数_Yaso_GG的博客-CSDN博客_libffi 深入浅出JNA android下使用JNA_10km的博客-CSDN博客_android jna Ubuntu 12.04下制作JNA For Android_齐北的博客-CSDN博客 五、图像传递 移动端视频进阶三OpenCV的集成及视频帧转cv::Mat的相关操作_木大白易的博客-CSDN博客 Android 相机 NV21 byte[] 和 JPEG byte[] 转 OpenCV 的 Mat_weixin_33973609的博客-CSDN博客 在IOS上YUV NV21格式的CVPixelBufferRef转opencv的RGB格式cv::Mat的方法_星辰辰大海的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机开机网络连接失败

查看当前系统的网络接口信息 [root@master ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00in…

unprofitable25,3

点积 略懂标记 9.23https://matt.might.net/articles/how-to-blog-as-an-academic/

爱站网自媒体数据网站建设介绍

前不久一个名为“Quantumas”的3D Demo引起了我们的关注&#xff0c;其作者称“这个引擎整合了各种最先进的渲染技术&#xff0c;在画质上超越了虚幻3&#xff0c;部分超越了CE2”&#xff0c;而我们在这个Demo中也的确看 到了高阶动态范围、多频软阴影、空间环境遮掩、HDR景深…

codeforces 1053 div2

codeforces 1053 div2最后一分钟写出B得代码没交上,哈哈哈哈,这辈子有了 这么简单得暴力要想3个小时,这辈子有了,哈哈哈 哈哈哈哈哈哈 A void solve(){cin >> n >> m;vector<int> num(m+1);for…

随机过程学习笔记

必过!随机过程随机过! 应用随机过程在线讲义@北大.李东风 todo

Easysearch 国产替代 Elasticsearch:8 大核心问题解读

近年来,随着数据安全与自主可控需求的不断提升,越来越多的企业开始关注国产化的搜索与日志分析解决方案。作为极限科技推出的国产 Elasticsearch 替代产品,Easysearch 凭借其对搜索场景的深入优化、轻量级架构设计以…

9.24 闲话

不是我的问题打过最好笑的一场 CF。 CF 开始前先打了会三国杀,两把都输了,感觉 rp 攒满了。打完后跟机房同学进行了一点辩论,起码保住了名誉(真的吗)。 开场看 A,发现完全不会做。看 B,发现也不会做。看 C,发现…

哪个网站能学做微商如何制作个人网页兼职

数据库的mysql语句: 1.连接数据库 mysql -u root -p2.显示数据库 show databases(db);3.选择数据库 use 数据库名;4.显示数据库中的表 show tables;基本数据操作:增删改查1.增 :insert into 表名(字段1,字段2…)values (值1,值2…);2.删 :delete from 表名 where 条件;3.改 :up…

安徽省和住房建设厅网站制作个网站

使用 date 命令设置时间 首先&#xff0c;你需要知道正确的日期和时间格式&#xff0c;格式为 MMDDhhmmYYYY&#xff0c;分别代表 月份、日期、小时、分钟和年份。 比如你想要设置日期为 2024 年 3 月 6 日&#xff0c;时间为 1 点 17 分&#xff0c;你可以这么做&#xff1a…

尚云网站建设app制作二维码

概率密度函数&#xff1a;是指想要求得面积的图形表达式&#xff0c;注意只是表达式&#xff0c;要乘上区间才是概率&#xff0c;所以概率密度并不是概率&#xff0c;而是概率的分布程度。 为什么要引入概率密度&#xff0c;可能是因为连续变量&#xff0c;无法求出某个变量的…

网站备案是在哪里查自己做网站出口

介绍 本示例主要使用ohos.data.uniformTypeDescriptor 展示了标准化数据定义与描述的功能&#xff0c;在新增预置媒体文件后&#xff0c;对媒体文件的utd标准类型获取、utd类型归属类型查询、获取文件对应的utd类型的默认图标、支持自定义数据类型等功能。 实现过程中还使用到…

工信部备案网站查询设计建筑办公室

题 有n个生物&#xff0c;第i个生物会在第i到第ai(i≤ai≤n)天出现&#xff0c;它的攻击力为bi。其中对于所有i(1≤i<n)&#xff0c;满足ai≤ai1请输出每天出现的生物的攻击力的最大值。 输入格式 第一行一个整数n 。 接下来n行&#xff0c;每行两个整数ai,bi 输出格式 一…

C#学习2

面向对象编程进阶 继承 csharp // 基类 public class Animal { public string Name public virtual void Speak() { Console.WriteLine("动物发出声音"); } }// 派生类 public class Dog : Animal { public …

AGC203F 题解

Description 给定一棵 \(n\) 个点的外向树,每个节点上有一个 \(0/1\) 的权值,求一个节点拓扑序使得节点权值的逆序对个数最小,输出最小值。 \(n \le 2 \times 10^5\)。 Solution 首先,对于一个 \(0\) 的节点,可以…

有自己的网站做淘宝联盟号做吗网页设计与制作教程psd格式

前言 中断服务程序往往都是在CPU关中断的条件下执行的&#xff0c;以避免中断嵌套而使控制复杂化。但是CPU关中断的时间不能太长&#xff0c;否则容易丢失中断信号。为此&#xff0c;Linux将中断服务程序一分为二&#xff0c;各称作“Top Half”和“Bottom Half”。前者通常对…

网页制作网站花店wordpress响应式主题在哪

问题描述 如果你在WCF中用Entity Framework来获取数据并返回实体对象&#xff0c;那么对下面的错误一定不陌生。 接收对 http://localhost:5115/ReService.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。 这还可能是由于服务器中止了 HTTP …

临沂市住房和城乡建设厅网站html网站开发流程

Linux下一般用date 记录当前时间&#xff0c;尤其是我们需要保存测试log的时候&#xff0c;或者设计一个跑多长时间的脚本都需要时间戳。下面看一下平时最常用的几种写法 1 date “%Y-%m-%d %H:%M” 显示具体时间 2 修改时间 date -s 3 date %s :当前时间的时间戳 显示具体时…

某旅行社网站建设论文网络设计费收费标准

亲爱的爬虫探险家&#xff01;在网络爬虫的世界里&#xff0c;自动设置代理服务器是一个非常有用的技巧。今天&#xff0c;作为一家代理服务器供应商&#xff0c;我将为你呈上一份轻松实用的教程&#xff0c;帮助你轻松搞定爬虫自动设置代理服务器。 一、为什么需要自动设置代…

AtCoder Beginner Contest 423 DEF题解

D - Long Waiting 题意: 餐厅最多同时容纳K人 单队列管理,先进先出 N组顾客按顺序到达,每组有:到达时间Aᵢ、人数Cᵢ、用餐时间Bᵢ 进入条件: 在队首位置 餐厅现有人数 + 该组人数 ≤ K 需要计算每组实际进入餐厅…

高级的 SQL 查询技巧

1.常见表表达式(CTEs) with toronto_ppl as ( SELECT DISTINCT name FROM population WHERE country = "Canada" AND city = "Toronto") , avg_female_salary as ( SEL…