草庐IT

JNI_OnLoad

全部标签

java - OSX Yosemite - JVM 共享库不包含 JNI_CreateJavaVM 符号

下载了OSXYosemiteBeta3,我正在尝试运行一些基于Eclipse的IDE,即TitaniumStudio和AptanaStudio。当我尝试启动应用程序时遇到此错误消息。启动时不起作用,所以我下载了JDK1.8.0_40,仍然没有骰子。它在正确的位置查找,文件存在并且使用正确的java版本。不知道是什么问题,如有任何帮助,将不胜感激。 最佳答案 从Apple下载适用于OSX2014-001的最新Java版本。http://support.apple.com/kb/DL1572?viewlocale=en_US&local

java - OSX Yosemite - JVM 共享库不包含 JNI_CreateJavaVM 符号

下载了OSXYosemiteBeta3,我正在尝试运行一些基于Eclipse的IDE,即TitaniumStudio和AptanaStudio。当我尝试启动应用程序时遇到此错误消息。启动时不起作用,所以我下载了JDK1.8.0_40,仍然没有骰子。它在正确的位置查找,文件存在并且使用正确的java版本。不知道是什么问题,如有任何帮助,将不胜感激。 最佳答案 从Apple下载适用于OSX2014-001的最新Java版本。http://support.apple.com/kb/DL1572?viewlocale=en_US&local

java - 在 JNI 代码中抛出异常的最佳方法?

我想要一种在JNI代码中抛出异常的一致且简单的方法;处理链式异常的东西(隐含地来自env->ExceptionOccurred方法,或显式地通过参数,任何一种方式都很好)并且每次我想这样做时都可以节省我查找构造函数的时间。以上所有内容最好用C语言编写,尽管我可以根据需要从C++翻译它。SO上有没有人可以分享类似的东西? 最佳答案 我们只是为我们想要抛出的每种异常类型编写实用方法。以下是一些示例:jintthrowNoClassDefError(JNIEnv*env,char*message){jclassexClass;char*c

java - 在 JNI 代码中抛出异常的最佳方法?

我想要一种在JNI代码中抛出异常的一致且简单的方法;处理链式异常的东西(隐含地来自env->ExceptionOccurred方法,或显式地通过参数,任何一种方式都很好)并且每次我想这样做时都可以节省我查找构造函数的时间。以上所有内容最好用C语言编写,尽管我可以根据需要从C++翻译它。SO上有没有人可以分享类似的东西? 最佳答案 我们只是为我们想要抛出的每种异常类型编写实用方法。以下是一些示例:jintthrowNoClassDefError(JNIEnv*env,char*message){jclassexClass;char*c

java - 通过 JNI 在 C 和 Java 之间传递指针

目前,我正在尝试创建一个使用CUDA功能的Java应用程序。CUDA和Java之间的连接工作正常,但我遇到了另一个问题,想问一下,我的想法是否正确。当我从Java调用native函数时,我将一些数据传递给它,这些函数会计算一些东西并返回一个结果。是否有可能让第一个函数返回一个指向该结果的引用(指针),我可以将其传递给JNI并调用另一个对结果进行进一步计算的函数?我的想法是通过将数据留在GPU内存中并仅传递对它的引用以便其他函数可以使用它,从而减少将数据复制到GPU和从GPU复制数据的开销。尝试了一段时间后,我自己想,这应该是不可能的,因为指针在应用程序结束后被删除(在这种情况下,当C函

java - 通过 JNI 在 C 和 Java 之间传递指针

目前,我正在尝试创建一个使用CUDA功能的Java应用程序。CUDA和Java之间的连接工作正常,但我遇到了另一个问题,想问一下,我的想法是否正确。当我从Java调用native函数时,我将一些数据传递给它,这些函数会计算一些东西并返回一个结果。是否有可能让第一个函数返回一个指向该结果的引用(指针),我可以将其传递给JNI并调用另一个对结果进行进一步计算的函数?我的想法是通过将数据留在GPU内存中并仅传递对它的引用以便其他函数可以使用它,从而减少将数据复制到GPU和从GPU复制数据的开销。尝试了一段时间后,我自己想,这应该是不可能的,因为指针在应用程序结束后被删除(在这种情况下,当C函

java - 异步调用如何获取JNI接口(interface)指针(JNIEnv *)

了解到JNI接口(interface)指针(JNIEnv*)只在当前线程中有效。假设我在native方法中启动了一个新线程;它如何将事件异步发送到Java方法?因为这个新线程不能引用(JNIEnv*)。为(JNIEnv*)存储一个全局变量显然不起作用? 最佳答案 您可以通过JNIEnv->GetJavaVM获得指向JVM(JavaVM*)的指针。.您可以安全地将该指针存储为全局变量。稍后,在新线程中,您可以使用AttachCurrentThread将新线程附加到JVM,如果你是用C/C++创建的,或者只是GetEnv如果你在java

java - 异步调用如何获取JNI接口(interface)指针(JNIEnv *)

了解到JNI接口(interface)指针(JNIEnv*)只在当前线程中有效。假设我在native方法中启动了一个新线程;它如何将事件异步发送到Java方法?因为这个新线程不能引用(JNIEnv*)。为(JNIEnv*)存储一个全局变量显然不起作用? 最佳答案 您可以通过JNIEnv->GetJavaVM获得指向JVM(JavaVM*)的指针。.您可以安全地将该指针存储为全局变量。稍后,在新线程中,您可以使用AttachCurrentThread将新线程附加到JVM,如果你是用C/C++创建的,或者只是GetEnv如果你在java

android - 在jni文件夹android中生成文件的最简单方法

我想知道是否有一种方法可以比这样的命令更容易地在jni文件夹中生成.h文件javah-jni-classpathbin/classes/-djni/com.example.test_ndk.FibLib我的意思是我想自动化这一步所以我只需要写publicnativestaticlongfibNR(longn);然后eclipse会在jni文件夹中为我生成.h文件我该怎么做? 最佳答案 选项1:如果有所不同,您不必包含-jni选项。这是javah的默认选项。javah-classpathbin/classes/-djni/com.ex

android - 我可以在 Android 上的 JNI 库中使用 C++ 异常吗?

有什么方法可以在Android上的JNI(Javanative接口(interface))库中使用C++异常?编辑:我说的是完全在JNI库内部的C++异常处理。也就是说,异常在库中被抛出和捕获,它永远不会逃出库。根据Android文档(docs/CPLUSPLUS-SUPPORT.html),仅当我使用“GNUlibstdc++”作为C++运行时而不是默认时才支持异常。问题是文档还指出程序的所有部分必须使用相同的C++运行时:"YoucanonlyselectasingleC++runtimethatallyourcodewilldependon.Itisnotpossibletomi