java - 通过 JNI/DLL 或 EXE 执行 native 代码?

标签 java c java-native-interface native

我们有一个本地应用程序,我们可以通过 JNI->DLL 或通过使用命令行参数调用 EXE 来访问它。哪种方法最好?

我们将每天大约调用此方法 100 次。性能不是特别重要。这个 native 应用程序是由我们公司以外的一个小组开发的,因此我们对代码不太熟悉(尽管我们确实拥有它)。

EXE 路径似乎更简单、更直接(特别是因为我们没有使用很多 C)。另外,如果你的 DLL 代码有内存泄漏或遇到其他问题,我还收集了 JNI 的信息,你可以使 JVM 崩溃。

最佳答案

我强烈推荐 .exe 方法。

  1. 如果它崩溃了,您可以重新生成 .exe
  2. 您不会遭受内存泄漏/损坏等问题。

缺点是您可能必须解析 .exe 输出以确定结果/状态等,如果它不是为此而设计的,那么这可能是不切实际的(甚至是不可能的)。

但作为第一种方法,生成 .exe 是可行的方法。别忘了 consume the stdout/err concurrently避免任何 .exe 挂起问题(一个常见问题,如果相信 SO 问题)。

关于java - 通过 JNI/DLL 或 EXE 执行 native 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556093/

相关文章:

java - java libgdx android 中的 float 问题

java - Android Studio 谷歌地图自定义 map ,只想显示自定义 map 但使用谷歌地图功能

java - 输出不显示任何内容

java - 设置一个字符串从c jni到java

c - 如何合并/馈送两个 uint8_t 缓冲区?

c++ - jni 将字符串转换为字符数组

java - 如何使用Spring云总线刷新应用程序实例以及不受配置服务器控制的数据?

c - 程序返回错误答案和 "-nan(ind)"。我做错了什么?

java - Windows 64 位上的 com4j

java - 如何使用 jni 指定可变数量的参数