我有一个DLL,它采用编码的字符串输入并解码它. DLL是使用Codeblocks和mingw64在Win7 64位上制作的. C代码单独运行正常但是当我通过JNA在具有相同字符串的while循环中运行它时,它被正确解码大约70%的调用,其余的不正确.我想调试这种情况但是我不确定在Java代码将控制交给JNA后如何做.或者,任何关于在哪里寻找的想法也会有所帮助.
C和JNA中的方法签名如下,
Java: int Decrypt_Blk(byte[] expkey,byte[] in,int size,byte[] out);
C: __declspec (dllexport) int Decrypt_Blk (unsigned char *expkey,unsigned char *in,unsigned int insize,unsigned char *out);
正确性由输出决定,例如,如果我把字符串“helloworld”加密它(我没有进入加密细节,因为它们无关紧要)然后将加密输出传递给这个DLL方法,10次中有7次我得到“HelloWorld”其他3次我会得到不正确和不同的字符.并且在所有10次中,我在同一个线程中使用相同的变量,在同一个循环中. 3次不正确的事件也是随机的,我唯一能注意到的是第一次运行总是正确的,就像我测试的那样多次,但不正确的运行发生在1-10次运行中的任何一次.
最佳答案