从 java 代码调用 DLL 中的本机函数。有时抛出未捕获的运行时异常

Call native function in DLL from java code. Sometimes throwing uncaught runtime exception

我的 java 代码调用了用 DLL 编写的函数。该函数在 java 中声明为本机函数。假设函数有 3 个参数。当我在 java 代码中使用带有两个参数的函数时,它工作正常。但是当我用三个参数调用本机函数时,它会出现以下错误。

runtime exception : uncaught runtime exception.

本机方法被重写,这意味着可以使用任意数量的参数调用它。所有的参数都是字符串类型。 因此,当使用两个参数调用该方法时,它始终有效。但是如果我们用 3 个参数调用。它在前 2-3 次工作,然后抛出运行时异常。

所以我只想知道这个问题是与 DLL 中实现的函数有关,还是我的 java 代码中的问题。我在 Thread 中调用了本机函数,这个本机函数正在使用外部 windows 资源。因为它有时会起作用,所以我认为该线程无法正常工作。 请提出建议。

示例代码:

Java 本机函数声明代码:

System.LoadLibrary("demo") // demo 为.dll,包含原生函数实现。 fn_dmeo(字符串 1, 字符串 2); fn_demo(字符串 1, 字符串 2, 字符串 3); // 这个函数打开记事本

fn_demo 的实现是用 dll 编写的。 所以我在 Thread.run() 中调用 fn_demo("","abc","xyz") 有两个参数,第一个为空,它总是有效。

如果我这样做 fn_demo("pqr","abc","xyz")。有时它有时会抛出运行时异常。

为什么?

此问题与内存泄漏有关。 dll 代码中的某些变量未正确分配值,它们具有垃圾值。因此代码间歇性失败。