인코딩 된 문자열 입력을 받아서 디코딩하는 DLL이 있습니다. DLL은 Codeblocks와 mingw64를 사용하여 Win7 64 비트에서 만들어졌습니다. 혼자 C 코드가 잘 실행되지만 JNA를 통해 while 루프에서 같은 문자열로 실행하면 약 70 %의 호출과 나머지는 올바르지 않게 올바로 디코딩됩니다. 상황을 디버그하고 싶지만 Java 코드가 JNA에 제어 권한을 넘긴 후 어떻게해야하는지 모르겠습니다. 또는 어디에서 볼지에 대한 아이디어도 도움이 될 것입니다. 다음JNA C DLL 디버그 하우투?
C 및 JNA에있어서 서명 전 (이 "Helloworld"를 암호화를 문자열을 경우
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);
정확성은, 예를 들면, 출력에 의해 결정된다 내가 들어가 있지 않다이다 암호화 세부 정보가 관련이 없으므로) 암호화 된 출력을이 DLL 메서드에 전달합니다. 10 번 중 7 번 "HelloWorld"가 3 번 발생합니다. 잘못된 문자가 여러 번 나옵니다. 그리고 10 번 모두 동일한 루프에서 동일한 변수를 사용하는 동일한 스레드에 있습니다. 3 개의 잘못된 어커런스 또한 무작위로, 제가 알아 차릴 수있는 유일한 것은 첫 번째 테스트가 내가 테스트 한 것만큼 항상 정확한 것입니다. 그러나 1-10 번의 실행 중 하나라도 잘못된 실행이 발생합니다.
[하단의 링크 확인] (http://web.archive.org/web/20081210024620/http://www.kineteksystems.com/white-papers/mixedjavaandc.html) – user1097489
수술의 정확성? 가장 먼저보아야 할 것은 입력과 출력에서 부호없는 것과 서명 된 사이의 변환 오류입니다. – technomage
API는''exp'' 데이터의 형식과''out'' 버퍼의 크기에 대한 가정을하고 있습니다. – technomage