是否可以通过JNI将静态库链接到Java?

是否可以构建HelloWorld.lib并使用JNI将其加载到Java应用程序? 或者它只适用于共享库?

我无法在JNI文档中找到明确的答案,没有提到“静态库”。

它需要是一个动态库。 幸运的是,您可以从静态库构建动态库。

Java 8支持静态链接的本机库http://openjdk.java.net/jeps/178

要在运行时加载库,它必须是一个DLL(窗口)。 如果你有一个静态库(lib),你必须通过JNI使用它,你必须创建一个包装器DLL

您必须将它链接到JVM,而您无法做到这一点。 这就是为什么JNI是用共享库定义的,而不是静态库。