gpt4 book ai didi

java - 调用不是为您的类编写的 JNI 方法

转载 作者:行者123 更新时间:2023-11-30 05:13:40 29 4
gpt4 key购买 nike

看来 JNI 方法需要使用内置的 Java 类签名来编写。我想调用一个我没有写的JNI方法。我可以在不是根据我的类编写的库上调用 native 方法吗?

最佳答案

给定:

package com.mycompany.package

class MyClass
{
public native void doSomething();
}

被转换(损坏)为本地链接的方法名称:

Java_com_mycompany_package_MyClass_doSomething

看来您需要在同一个包中使用相同的类才能将 native 方法连接到 Java 方法。如果您无法控制 native 库,这似乎可能会出现问题和/或容易出错。将代码打包在外部包中是一个坏主意,尤其是。国外包裹是否签字盖章。

还有一个问题是, native 调用通常有一些您可能会违反的特定注意事项 - 例如线程安全问题,或释放内存或锁(需要调用您正在使用的函数周围的其他 native 函数)。

根据我在 JNI 方面的(相当多的)经验,我不会推荐它,除非您绝望并且没有其他选择,并且您非常熟悉目标系统和 API。

更好的选择是围绕要使用的目标操作系统 API 编写一个简单的 native 包装器。

关于java - 调用不是为您的类编写的 JNI 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2414981/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com