2013-03-15 90 views
7

是否可以构建HelloWorld.lib并使用JNI将其加载到Java应用程序中?或者它只与共享库一起工作?是否可以通过JNI将静态库链接到Java?

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

+0

检查http://stackoverflow.com/questions/2349093/static-libraries-and-jni – BackSlash 2013-03-15 13:31:46

+0

@Harlandraka我看到的问题发布前,但链接死。而且,现在它直接是问题答案而不是问题评论。 – quimnuss 2013-03-15 13:42:14

回答

3

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

+0

就像我想的那样...所以我想我必须使用-fPIC标志重新编译静态库,该死的。 – quimnuss 2013-03-15 13:39:24

+0

或者将其封装在动态/共享库中,避免重新编译。 – 2013-03-15 13:44:13

+0

您可以粘贴一个链接,如何从静态库中获取尚未用fPIC编译的共享库? – quimnuss 2013-03-15 15:29:08

1

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

0

你将不得不将它链接到JVM,你没有办法做到这一点。这就是为什么JNI是用共享库定义的,而不是静态的。

相关问题