मेरे पास एक डीएलएल है जो एक एन्कोडेड स्ट्रिंग इनपुट लेता है और इसे डीकोड करता है। डीएलएल को कोडब्लॉक्स और मिंगव 64 का उपयोग कर विन 7 64-बिट पर बनाया गया था। सी कोड अकेले ठीक चलता है लेकिन जब मैं इसे एक ही स्ट्रिंग के साथ थोड़ी देर में जेएनए के माध्यम से चलाता हूं तो इसे लगभग 70% कॉल के लिए ठीक से डीकोड किया जाता है और बाकी के लिए यह गलत होता है। मैं स्थिति को डीबग करना चाहता हूं लेकिन मुझे यकीन नहीं है कि जावा कोड के नियंत्रण के बाद जेएनए पर नियंत्रण कैसे किया जाए। वैकल्पिक रूप से कहां देखना है, इस पर कोई भी विचार उपयोगी होगा।जेएनए सी डीएलएल डीबग हाउटो?
सी और 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" यह एन्क्रिप्ट मैं में नहीं जा रही हूँ एन्क्रिप्शन विवरण क्योंकि वे अप्रासंगिक हैं) फिर एन्क्रिप्टेड आउटपुट को इस डीएलएल विधि में पास करें, 10 बार में से 7 बार मुझे "हैलोवर्ल्ड" अन्य 3 बार मिलते हैं, मैं गलत और अलग-अलग अक्षर प्राप्त करूंगा। और सभी 10 बार मैं एक ही थ्रेड में उसी वैरिएबल का उपयोग कर उसी धागे में हूं। 3 गलत घटनाएं भी यादृच्छिक हैं, केवल एक चीज जो मैं देख सकता हूं वह यह है कि पहला रन हमेशा परीक्षण किया जाता है जितना मैंने परीक्षण किया है लेकिन गलत रन किसी भी 1-10 रन में होता है।
[नीचे दिए गए लिंक देखें] (http://web.archive.org/web/20081210024620/http://www.kineteksystems.com/white-papers/mixedjavaandc.html) – user1097489
आप कैसे निर्धारित कर रहे हैं ऑपरेशन की "शुद्धता"? देखने के लिए पहली जगह इनपुट और आउटपुट पर हस्ताक्षरित और हस्ताक्षरित के बीच रूपांतरण त्रुटियों के लिए होगी। – technomage
ध्यान दें कि आपका एपीआई '' एक्सकी 'डेटा के प्रारूप के साथ-साथ '' आउट'' बफर के आकार के बारे में धारणाएं बना रहा है। – technomage