我正在使用 nar-maven-plugin 3.0.0 我的 pom 类似于以下内容:
<packaging>nar</packaging>
<build>
<plugins>
<plugin>
<groupId>com.github.maven-nar</groupId>
<artifactId>nar-maven-plugin</artifactId>
<version>3.0.0</version>
<extensions>true</extensions>
<configuration>
<libraries>
<library>
<type>jni</type>
</library>
</libraries>
</configuration>
</plugin>
</plugins>
</build>
而且它确实有效。在我的 Linux 下,它会自动找到 gcc 并使用它来构建所有内容并将其打包到 nar 中。然而,这是 .so 文件。
我的问题是:是否有可能以某种方式配置它以在带有 .so 的 nar 旁边创建带有 .dll 的在 Linux 下 nar?并且通常生成 JNI nars,以适应不同的架构?
如果可能,请提供一些配置片段、链接或任何可以给我一些线索的东西。
最佳答案
- 将 Windows JDK 复制到 Linux 上。否则,您将不需要 header 和 implib。如果你看,你会看到有两个 JNI 头文件;一种是按平台。当然,您需要一个 implib 来链接您的 DLL,以便它可以连接到 JVM。
- 获取https://fedoraproject.org/wiki/MinGW?rd=SIGs/MinGW ,一个交叉编译环境。
- 教 NAR 插件关于 (2)。这可能需要阅读 NAR 插件的源代码。
- 遗憾的是您仍然需要一个 Windows 机器来测试结果。
那么你确定要这样做吗?我非常怀疑您会发现这是一种常见的、受支持的实践,因为我们大多数人都想测试我们构建的东西。由于您需要实际的 Windows 进行测试,因此您不妨在那里构建。
关于java - 是否可以在 Linux 下构建 JNI .dll?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25614139/