问题标签 [jnienv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 这个对java方法的调用有什么问题?
我正在尝试从代码中调用 Java 方法。C 代码侦听Escape
, Shift
,Ctrl
按键,然后调用 Java 方法来告知按下了哪个键。以下是在其中发挥作用的片段。
C 片段:
Java 片段:
当我运行程序并按下Escape
键时,我在控制台上得到了这个:
我知道我以错误的方式调用 Java 函数,但我不知道我错在哪里。从输出来看,当我按下Escape
键然后发生意外错误时,它满足了这种情况。
编辑:
在mavroprovato回答之后,我仍然得到同样的错误。
我这样编辑:
编辑:
完整代码版本 1
完整代码版本 2
java - Windows下JNI和C入门
我是 Java 学习新手,第一次想开始 JNI。我正在使用 Cygwin,我创建了一个扩展名为 .java (Helloworld.java) 的文件,如下所示:
然后我通过命令行()编译文件,然后通过命令javac Helloworld.java
创建一个本机头文件javah –jni Helloworld
然后还通过创建一个C文件来实现:
在那之后我运行命令
在 Cygwin 的命令提示行中给出消息
如何运行以及设置执行文件的路径的程序是什么?请帮助我任何一个。谢谢。
java - Java JNI - 返回 jintArray 时出现 EXCEPTION_ACCESS_VIOLATION
这段代码中发生了一件非常奇怪的事情
该方法实际上返回一个我可以在 Java 中处理的结果
其中 printArray 只是一个简单的
输出如下
如您所见,它返回一个结果,但之后 JM 立即崩溃并且不再执行任何行。我绝对会感谢任何帮助!谢谢!
编辑:如果我删除对 rtlsdr_get_tuner_gains 的调用,而是手动初始化增益数组,则不会观察到错误。由于此方法在 dll 中,我可以防止它以某种方式使 JNI 崩溃吗?
java-native-interface - 具有多个参数的 JNI 方法?
我是 JNI 的新手,我想将三个整数传递给下面的函数
如果我错了请纠正我
如果 (!getStaticMethodInfo(methodInfo, "pauseEffect", "(I)V"))
(I;I;I)V 或只是 (III)V
如果我的函数是 void pauseEffectJNI(unsigned int nSoundId, unsigned int number1, unsigned int number2) ??
基本上我想知道如果我想通过多个 Integer 怎么办
感谢您的帮助...这是我制作的功能...如果我错了请纠正我
java - Android C/C++ 原生调用 Java API
Android C/C++ 原生调用 Java API 的例子很多。但是,我读过的所有这些示例都是 Android Java API 首先调用本机,然后本机通过使用传递的 JNI-ENV 调用其他 Java API。
没有通过的 JNI-ENV,C/C++ 怎么能得到呢?C/C++ 本机是否可以在没有 JNI-ENV 的情况下调用 Java API?
如果可能的话,你能举个例子或链接吗?
谢谢!
xamarin.android - 从 monodroid 应用程序中调用 JNIEnv
这是我在 monodroid 应用程序中通过 JNIEnv 访问的 Java 类
我可以通过以下语句实例化该类:
但是当我尝试创建对象来访问getSelctd()方法时:
它抛出 NoSuchMethodExist 异常...请告诉我我是否以正确的方式做这件事以及我在这里缺少什么...
java - 如何从jni中的类中检索char数组
我将类的对象从 java 传递到JNI
. 我已经使用GetObjectClass
.
我可以通过使用获取类中整数的值
我可以使用and获得String
价值。GetObjectField
GetStringUTFChars
我如何Char Array
在Java
课堂上获得礼物JNI
?
c - 保持对 JNIEnv 环境的全局引用
我将存储JNIEnv
在全局中,以便稍后调用静态 java 方法。但是是否有必要存储指向 的全局指针JNIEnv
,它们与任何其他 java 对象一样,或者它是不需要这个的特殊情况。
编辑
我在这里有点笨,所有将使用的方法globalEnvPointer
,都在我的 init 中调用,因为 myinit
实际上是我c
的程序的main
方法,直到程序结束才会返回。我在 c 程序中也没有使用其他线程。我认为这简化了答案。
java - Android 内存管理从原生 JNI 调用 Java 类并声明数据(用于图像转换)
我正在为希望解压缩数据块的 Android 编写本机代码。我正在从本机 JNI 函数调用 Java 方法。这个 Java 方法调用 BitmapFactory,然后尝试分配一些内存:
当程序似乎崩溃或停止或其他情况时,给我“spin on suspend”,然后在 VM 关闭之前在 logcat 中喷出很多东西。
只是为了在深入了解细节之前给出大图,我试图将压缩图像的字节数组转换为width*height*bpp
未压缩的图像以返回给本机代码。我正在尝试使用 Android Java BitmapFactory 进行似乎可以正常工作的解压缩。压缩的字节块是之前加载到本机代码中的 JPG 或 PNG 图像(在我的系统中无法从磁盘读取)。
序列有点复杂,我不确定什么是相关的,所以我会全部说出来:
class MyRenderer implements GLSurfaceView.Renderer
方法onSurfaceCreated
调用原生init()
,它在MyRenderer
类中定义:
在本机代码中,这是调用的函数:
然后调用另一个本机函数char glprog_init(int dummy_variable)
,该函数本身调用本机 wrapper_uncompress_image_by_os(overlay_compressed_data,overlay_compressed_data_len,... 这是本机函数:
它调用了与nativeconvertImageFromNative()
相同的 Java 类中的方法。 MyRenderer
init()
}
到目前为止,这似乎有效,如果我取消注释writeFile()
它会将所有数据正常写入我的 SD 卡。我有问题是在里面bytes2bitmap()
。
可以在“常规”Java 中调用该类bytes2bitmap()
,但是当从本机调用的 this 调用时,它会在该int[] pixels = new int[width * height];
行崩溃。
所以最后这里是导致崩溃的代码:
我还没有完成将未压缩的数据正确地传递回本机代码的部分,但我认为我应该首先解决这个问题。
我可以在本机代码中创建一个int[]
数组来传递,问题是我不知道未压缩的图像大小。
在此先感谢,马克
c# - Monodroid JNI for Java 反射调用私有方法
在 Monodroid 项目中,我需要能够调用类的私有方法。从一个相关问题的答案来看,这似乎可以通过反射在 Java 中实现:
我需要使用来自 Monodroid 的这段代码。不幸的是,java.lang.reflect
在 Monodroid 中不可用。但是,有人建议我可以使用 Monodroid 项目中的 JNI 运行此代码。Xamarin 文档指出内联 JNI 是可能的,而无需绑定整个 JAR。不幸的是,进一步的文档没有说明更多关于这个主题的内容。此外,关于 JNIEnv 的文档是空白的。
看起来我需要JNIEnv.CallVoidMethod()
,但我不知道该怎么做。我找不到示例或更多文档。
如何在我的 Monodroid 项目中使用,或以java.lang.reflect
其他方式调用私有方法?.createPipe
ParcelFileDescriptor