DLL: JNA调用动态链接库DLL,重复返回字符串error

DLL: JNA调用动态链接库DLL,重复返回字符串error

这应该是一个只有我才能碰到的bug!

在做MD5加密算法课设时,发现JNA调用动态链接库的方法时,会出现 字符串追加 的情况。

现象:

    public interface CLibrary extends Library {

        CLibrary INSTANCE = (CLibrary) Native.load("encryptiondll", CLibrary.class);
        String MD5Encrypt(String text);

    }
        // 使用MD5算法进行加密
    public static String textEncryption(String text) {

        System.out.println(text);

        // 返回的加密后text, 是以空格为分隔符的小写的加密序列
        String md5Text = CLibrary.INSTANCE.MD5Encrypt(text);

        System.out.println(md5Text);

        String result =  md5Text.replace(" ", "").toUpperCase();

        return result;

    }

后端调试输出的结果:
DLL: JNA调用动态链接库DLL,重复返回字符串error_第1张图片

密码正确,为啥报 password error ?
DLL: JNA调用动态链接库DLL,重复返回字符串error_第2张图片
这就很离谱了!debug 了一下,textEncryption 方法中传入的 text 没问题,


String md5Text = CLibrary.INSTANCE.MD5Encrypt(text);

这一步后,就有问题了!

所以,是JNA中的API的问题 ?

翻了下,不太像。。。

这时,猛然想起,DLL的接口中的一处!!!
DLL: JNA调用动态链接库DLL,重复返回字符串error_第3张图片

把static去掉后,一切正常。。。
DLL: JNA调用动态链接库DLL,重复返回字符串error_第4张图片

C语言果然,博大精深,老阔疼。

你可能感兴趣的:(C)