jnienv相关内容

使用C++实现Android事件处理程序

我有一个用Java编写的布局设计,目前正在通过JNI移植到C++。在这一点上,我实际上已经完成了,但是我目前对于如何设置事件处理程序(例如setOnClickListener)感到困惑。我已经经历了the JNI specification,运气不太好。 如果有人能将下面的代码片段移植到C++或将我引向正确的方向(由于结果的代码量更合理),我将不胜感激。 public void ..
发布时间:2022-02-28 10:35:07 移动开发

缓存 JNI 对象和线程安全(在 Android 中)

我正在使用本机线程 (pthreads) 编写 C++ 应用程序,我需要调用一些 Java 方法等.我不确定哪些 JNI 对象可以安全缓存,即存储在我的 C++ 对象中以供以后使用,可能/可能由不同的线程.我知道如果我的类的方法可以被不同的线程调用,我不能缓存 JNIEnv,而是缓存 JavaVM 并通过附加当前线程来获取 JNIEnv.但这是否也意味着我不能缓存从 JNIEnv 获得的任何东西? ..

保持对 JNIEnv 环境的全局引用

我将 JNIEnv 存储在全局中,以便以后可以调用静态 java 方法.但是是否有必要存储一个指向 JNIEnv 的全局指针,它们与任何其他 java 对象一样,或者它是不需要这个的特殊情况. JNIEnv* globalEnvPointer;[JNICALL 等] void init(JNIENv* env, [等]){//必需的?globalEnvPointer = (JNIENv*) (e ..
发布时间:2022-01-25 20:49:31 其他开发

保存 JNIEnv* 的最佳方法是什么

我有一个带有 JNI 的 Android 项目.在实现侦听器类的 CPP 文件中,有一个回调 x() .当调用 x() 函数时,我想调用 java 类中的另一个函数.但是,为了调用该 java 函数,我需要访问 JNIEnv*. 我知道在回调的同一个cpp文件中,有一个函数: static jboolean init (JNIEnv* env, jobject obj) {...} 在调 ..
发布时间:2021-11-27 20:00:54 移动开发

JNI线程模型?

当我从Java调用C/C ++时,是JavaVM或JNI创建的新线程来在我的Java线程等待时运行C/C ++代码吗? 我之所以这样问,是因为我的C/C ++代码在GPU上运行了某些程序,因此我需要检查特定的缓冲区以返回结果.得到结果后,需要再次调用Java函数. 因此,我想在C ++端创建一个线程,以不断检查缓冲区,一旦有可用数据,就调用Java端. 解决方案 JNI在后台不创建任 ..
发布时间:2021-02-10 20:17:28 Java开发

在JNI中从C ++代码创建New< PrimitiveType> Array时,如何释放< PrimitiveType> Array的缓冲区?

我目前正在使用Java作为GUI在C ++中编写一个小型仿真器.为了实现这一点,我正在通过C ++代码进行JNI调用,将数据数组传递给GUI应用程序.但是,由于我在测试运行中进行的调用数量很少,因此很明显,在我传递数据的函数中发生了内存泄漏. 在我的程序运行之前: 我的程序由于内存不足而运行并崩溃后: 在对发生的情况进行了全面分析之后,我得出结论,不是导致内存泄漏的Java GUI类,而是 ..
发布时间:2020-06-27 19:01:48 Java开发

载入JNI Dll

我有一个文件编写如下: package JNI; public class Natives { public static final int PAGE_READONLY = 0x02; public static final int PAGE_READWRITE = 0x04; public static final int PAGE_WRITECOPY = 0 ..
发布时间:2020-06-27 19:01:41 Java开发

JNI Linux分段故障

我的JNI库在Windows上可以完美运行,但是在Linux上,我总是遇到奇怪的分段错误. siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000 崩溃文件中的堆栈尾部是这样的: C [libfmodjavaL.so+0xfb8c] JNIEnv_::GetSt ..
发布时间:2020-06-27 19:01:37 Java开发

Windows下的JNI和C入门

我是Java学习的新手,第一次想开始使用JNI.我正在使用Cygwin,并且创建了一个扩展名为.java(Helloworld.java)的文件,如下所示: class HelloWorld { private native void print(); public static void main(String[] args) { new HelloW ..
发布时间:2020-06-27 19:01:33 Java开发

缓存JNI对象和线程安全性(在Android中)

我正在使用本机线程(pthread)编写C ++应用程序,并且需要调用一些Java方法等.我不确定哪些JNI对象可以安全地缓存,即存储在我的C ++对象中以便以后使用,可能/可能是通过不同的线程.我确实知道,如果我的类的方法可以由不同的线程调用,则我不必缓存JNIEnv,而应该缓存JavaVM并通过附加当前线程来获取JNIEnv.但这是否还意味着我无法缓存从JNIEnv获得的任何内容?我需要使用通 ..

JNI_CreateJavaVM()以退出代码1终止

我正在尝试使用JNI从C ++调用Java方法.为此,我安装了jdk1.7.0_51,并链接到jdk1.7.0_51\lib\jvm.lib,包括jdk1.7.0_51\include和jdk1.7.0_51\include\win32.在Visual Studio 2012中使用以下代码,我试图创建一个Java vm对象-但是该函数始终以退出代码1终止我的应用程序(该函数不返回1:我的程序完全终 ..
发布时间:2020-06-27 19:01:25 C/C++开发

从本地方法返回由JNI创建的本地引用

JNI引用说明: “本地引用在本机方法调用期间有效,它们在本机之后自动释放方法返回。 来源: http://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#global_local 我有点迷失在这里,根据上面的介绍,我必须显式调用 NewGlobalRef ,并将调用返回的对象传递给 N ..
发布时间:2018-04-19 18:23:32 Java开发

JNI在C ++中读取文件到jbyteArray

我在UNIX中编写一个C ++程序来生成一个共享库,将使用JNI在java中调用它。这个C ++程序必须在UNIX中读取一个文件,然后它必须转换为 jbyteArray (JNI数据类型),以便JAVA可以使用它。 我在C ++中将文件读入 char * ,但无法转换为 jbyteArray 。请帮助它。 代码如下:: #include #inclu ..
发布时间:2016-10-14 22:01:19 Java开发

保持一个全球参考JNIEnv的环境

我存储了的JNIEnv 在全球,所以我可以在以后调用静态Java方法。但它是nessasary存储了一个全球性的指针的JNIEnv ,他们的方法之一将与其他Java对象,或者是它不需要这种特殊情况。 的JNIEnv * globalEnvPointer;[JNICALL等]无效的init(JNIEnv的* ENV [等]) { //需要? globalEnvPointer =(JNI ..
发布时间:2016-08-18 22:02:46 C/C++