java – JNA C DLL Debug Howto?

前端之家收集整理的这篇文章主要介绍了java – JNA C DLL Debug Howto?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个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次运行中的任何一次.

最佳答案
在Microsoft Visual C中,从DLL项目的“项目设置”中,可以选择“调试”选项卡.作为调试会话的可执行文件,提供Java.exe的完整路径.对于参数,请提供命令行的其余部分以运行Java应用程序.在C代码中设置断点并启动调试会话.瞧!

猜你在找的Java相关文章