通过JNI/DLL或EXE执行本机代码?

Mar*_*eon 3 c java java-native-interface native

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

我们将每天调用此方法大约100次.表现并不是非常重要.这个原生应用程序是由我们公司以外的团队开发的,所以我们不太熟悉代码(尽管我们拥有它).

EXE路线似乎更容易,更直接(特别是因为我们没有使用很多C).另外,如果您的DLL代码有内存泄漏或遇到其他一些麻烦,我会收集JNI,您可能会崩溃您的JVM.

Bri*_*new 5

我强烈推荐使用.exe方法.

  1. 如果崩溃你可以重新生成.exe
  2. 你不会遭受内存泄漏/损坏等.

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

但作为第一种方法,产生.exe是可行的方法.不要忘记同时使用stdout/err以避免任何.exe挂起问题(一个常见问题,如果要相信SO问题).