代码之家  ›  专栏  ›  技术社区  ›  BullyWiiPlaza

JNA本机代码有时会失败,错误代码为127:“找不到指定的过程”

  •  0
  • BullyWiiPlaza  · 技术社区  · 6 年前

    我在用 JNA 调用本机代码。这在大多数情况下都有效,但有时我会遇到以下例外情况:

    java.lang.IllegalStateException: 127: The specified procedure could not be found.
    

    通常这种异常会在第一次调用它时发生。如果呼叫成功,则以下所有呼叫都将成功,只要 Java 程序运行。

    例如,我的代码如下所示:

    boolean succeeded = MY_KERNEL_32.DebugSetProcessKillOnExit(false);
    if (!succeeded)
    {
        checkForKernelError();
    }
    

    checkForKernelError() 定义如下:

    private static void checkForKernelError()
    {
        int lastErrorCode = MY_KERNEL_32.GetLastError();
    
        if (lastErrorCode != 0)
        {
            String lastErrorMessage = formatMessage(lastErrorCode);
            String errorMessage = lastErrorCode + ": " + lastErrorMessage;
            throw new IllegalStateException(errorMessage);
        }
    }
    

    我们的想法是打电话给 Windows API 本机代码与运行在 Windows 并始终坚持事后成功。但为什么我有时会 The specified procedure could not be found 当本机函数从未更改且应该始终被找到时。这里可能存在什么问题?如何解决它,使其始终像应该的那样工作?

    0 回复  |  直到 6 年前