繁体   English   中英

JNA C DLL Debug Howto?

[英]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代码中设置断点并启动调试会话。 瞧!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM