पर स्ट्रक्चर पॉइंटर सेट करें मैं कंप्यूटर के आरएस 485 इंटरफ़ेस पर किसी डिवाइस के साथ संवाद करने के लिए जेएनए का उपयोग शुरू कर रहा हूं। मुझे आश्चर्यजनक रूप से मैं बहुत अच्छे परिणाम के लिए आया था। लेकिन अब मैं एक साधारण समस्या से फंस गया हूँ। मैं जिस पुस्तकालय का उपयोग करता हूं वह संरचना के सूचक के लिए एक सूचक को स्वीकार करता है। वास्तविक हस्ताक्षरजेएनए: नल
func(Struct1 **, Struct2 **, Struct3 *, Struct4 *, long)
अब पहले पैरामीटर पुस्तकालय की उम्मीद पिछले सूचक एक शून्य सूचक होने के लिए के आकार का संकेत है। यह असफल रहता है। technomage के प्रश्न के अनुसार 1
s[pos] = new Struct1.ByReference(Pointer.NULL); // results in zero memoried structure as well
संपादित 2
Struct1.ByReference[] s = (Struct1.ByReference[]) new Struct1.ByReference().toArray(size);
int pos = 0;
// ...
// for loop to set the s[pos] struture values
for(pos = 0; pos < size - 1; pos++)
// ...
// Now set the last array element to a null pointer to indicate end-of-list
s[pos].getPointer().setPointer(0, null);// Following does not work: results in zero memoried structure
s[pos] = null; // Following does not work wither: NullPointerException at com.sun.jna.Structure.autoWrite
संपादित करें: निम्न कोड है जो मैं अब तक की कोशिश की है। मैं सी कोड लिखने के लिए थे, तो यह शायद ऐसा ही कुछ दिखेगा:
Struct1 **s = malloc(n * sizeof(Struct1*));
for(int i=0; i<n; i++)
{
if(i == n -1)
{
s[i] = NULL;
}
else
{
s[i] = malloc(sizeof(Struct1));
s[i].bla = value;
....
}
}
लेकिन चेतावनी दी: मैं C/C बहुत कुशल नहीं हूँ ++। मैं जावा को अपना डोमेन मानता हूं।
क्या किसी को भी ऐसी ही समस्या है? शायद मैं पेड़ के लिए लकड़ी नहीं देख रहा हूं ...
अग्रिम धन्यवाद।
कृपया मूल उपयोग का नमूना शामिल करें। पॉइंटर विविधताओं के लिए फ़ंक्शन घोषणाएं उस संदर्भ के बिना संदिग्ध हो सकती हैं - एक सूचक के बीच एक सूचक के बीच अंतर करने का कोई तरीका नहीं है, एक पॉइंटर मूल्य के लिए सूचक, या कई अन्य विविधताएं हैं। – technomage
'उदाहरण उपयोग' के साथ आपका क्या मतलब है? लाइब्रेरी को फ्रीआरटीओएस चलाने वाले एम्बेडेड डिवाइस के कोड से अपनाया गया था जो एक ओपन सोर्स रीयल-टाइम ऑपरेटिंग सिस्टम है। लाइब्रेरी के तरीकों को निर्यात करने वाले हेडर फ़ाइल के अलावा मेरे पास कोई मूल कोड नहीं है। –
यदि आप 'सी' में कोड लिखना चाहते थे जो लाइब्रेरी को आपकी इच्छानुसार एक्सेस करता है, तो _that_ कैसा दिखता है? – technomage