- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
尝试实现其中描述的方法(请参阅评论): Is it possible to use sun.misc.Unsafe to call C functions without JNI?
但无法调用我的 JavaCritical_ 方法。
这是JNI部分
JNIEXPORT void JNICALL JavaCritical_blas_BLAS_a(jint, jdouble *na) {
printf("!v!\n");
}
JNIEXPORT void JNICALL Java_blas_BLAS_a(JNIEnv *env, jclass, jdoubleArray a) {
}
这是 Java:
public class BLAS {
public static native void a(double[] a);
}
如果我使用 -XX:+TieredCompilation -XX:+PrintCompilation 运行我的程序,我会得到这个
3475 1488 n 0 blas.BLAS::a (native) (static)
和“!v!”未打印。据我了解,输出中的“n”意味着 JVM 使用 JNI 的 Java_xx 方法的包装器,而不是 CriticalJava 方法。
那么有人可以建议我做错了什么吗?顺便说一句,我在 x64 位 Windows 10 下的 JVM v1.8.0_152 x86 模式下运行它。
最佳答案
呃。没关系。我可以通过引入 .def 文件来使其工作。
确实有一个bug: https://bugs.openjdk.java.net/browse/JDK-8167408仍然存在。
有趣的是:您需要将 lib 中的所有 JNI 方法移至 .def 文件中,因为如果您混合修饰和未修饰的名称,则 JavaCritical 可能不会被选取。
而且这个东西确实适用于像 dgemm 这样的复杂签名方法,这很酷。
关于java - 如何让 JavaCritical 真正在 JNI 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48730135/
尝试实现其中描述的方法(请参阅评论): Is it possible to use sun.misc.Unsafe to call C functions without JNI? 但无法调用我的 J
我是一名优秀的程序员,十分优秀!