java-native-interface相关内容

Windows 上的 Java JNI 和依赖库

长话短说:我有一个可执行的 jar,它调用依赖于 lib.dll 的 jni.dll.我得到了非常可怕的 UnsatisfiedLinkError. 这个答案非常接近,但根据我的经验,它无法解决问题.即使在 java.library.path 中指定了 dll 所在的文件夹,它也不起作用.我还必须更改 Windows PATH 环境变量.其实Windows上默认的java.library.p ..
发布时间:2022-01-25 21:02:53 Java开发

JNI Attach/Detach 线程内存管理

我有一个 JNI 回调: void callback(Data *data, char *callbackName){JNIEnv *env;jvm->AttachCurrentThread((void **)&env, NULL);/* 开始有用的代码*//* 结束有用的代码 */jvm->DetachCurrentThread();} 当我像这样运行它(空的有用代码)时,我遇到了内存泄漏. ..
发布时间:2022-01-25 21:02:18 Java开发

使用调用 API 的 JNI 内存管理

当我使用 JNI 方法构建一个 java 对象时,为了将它作为参数传递给我使用 JNI 调用 API 调用的 java 方法,我如何管理它的内存? 这是我的工作: 我有一个 C 对象,它有一个比 free() 更复杂的析构方法.这个 C 对象要与一个 Java 对象关联,一旦应用程序完成了 Java 对象,我就不再需要 C 对象了. 我正在像这样创建 Java 对象(为清楚起见, ..
发布时间:2022-01-25 21:02:02 Java开发

当我从本机 Java 方法抛出 C++ 异常时会发生什么?

假设我将 Sun 的 JVM 嵌入到 C++ 应用程序中.通过 JNI,我调用了一个 Java 方法(我自己的),该方法又调用了我在共享库中实现的本地方法. 如果这个本地方法抛出 C++ 异常会发生什么? 编辑:编译器是 gcc 3.4.x,jvm 是 sun 的 1.6.20. 解决方案 在 JNI 文献中,exception 这个词似乎专门用于指代 Java 异常.本机代码 ..
发布时间:2022-01-25 21:00:23 Java开发

使用 JNI 将数据类型从 Java 传递到 C(反之亦然)

使用 JNI,我们可以将自定义数据类型从 Java 传递到 C(反之亦然)吗?我看到原始数据类型到 C 中的类型的映射,但不太确定我们是否可以发送我们自己的数据类型(例如发送或返回一个 Employee 对象或其他东西!). 解决方案 如果您要对很多对象执行此操作,则最好使用 Swig 之类的东西.您可以使用 jobject 类型来传递自定义对象.语法不好,也许有更好的写法. 员工对 ..
发布时间:2022-01-25 20:59:41 Java开发

Unity3d 与 android 集成

我需要创建一个 android 应用程序,它由 Unity3d(动画等)和 AndroidSDK 上编写的部分组成(通过 androidSDK,我的意思是很少有用 java、清单和资源编写的活动) 事实上我已经有了这些部分(至少模拟已经准备好了=))我不知道如何在它们之间进行通信. 我已经阅读了很多关于 unity3d android 集成的文章(主要是关于“插件"的东西)并且无法理解 ..
发布时间:2022-01-25 20:59:18 移动开发

两次调用 JNI_CreateJavaVM 函数

我正在使用一个在库代码中调用 JNI_CreateJavaVM 函数的库.但是,我还需要一些 JNI Wrappings 并且我需要调用相同的函数 JNI_CreateJavaVM 以将 JNIEnv* 获取到我的应用程序. 但是第二次调用失败了. 有什么办法吗? 该库不支持获取或设置在该库中创建的JNIEnv*. 解决方案 你不能从同一个进程创建多个 JVM: 从 ..
发布时间:2022-01-25 20:59:01 Java开发

使用 long 将指针从 JNI 传递到 Java

我正在尝试将结构作为指针从 JNI 传递到 Java,以便以后能够将其从 Java 传递回 JNI.我已阅读此主题:通过 JNI 在 C 和 Java 之间传递指针,但我没有成功. 我有一个相当复杂的结构:struct myStruct_s myStruct; 在 Java 中,我调用一个 JNI 函数来初始化结构并返回一个 long(指向结构的指针): JNIEXPORT jlon ..
发布时间:2022-01-25 20:57:01 Java开发

捕获运行在 Android 上的本机代码引发的异常

我目前正在进行的项目需要我编写跨平台程序实现的 android 部分. 通过 android-ndk 构建了一组核心功能并将其包含在我的应用程序中.我发现本机代码中发生的任何异常/崩溃充其量只会不时报告.发生错误时,我会出现以下行为之一: 发生堆栈跟踪/内存转储并写入日志文件.程序消失(设备上没有给出关于为什么应用程序突然不再存在的指示). 没有任何堆栈跟踪/转储或其他迹象表明本机代 ..

如何将 jstring 转换为 wchar_t *

假设在 C++ 端,我的函数采用类型为 jstring 的变量,名为 myString.我可以将其转换为 ANSI 字符串,如下所示: const char* ansiString = env->GetStringUTFChars(myString, 0); 有没有办法获得 const wchar_t* unicodeString = ... 解决方案 如果这对某人有帮助...我 ..
发布时间:2022-01-25 20:51:44 Java开发