मैंने सी में ड्राइवर के लिए एक डीएलएल विकसित किया है। मैंने सी ++ में एक परीक्षण कार्यक्रम लिखा और डीएलएल ठीक काम करता है।पायथन सीटीपी रिकर्सिव संरचनाएं
अब मैं पाइथन का उपयोग करके इस डीएलएल के साथ बातचीत करना चाहता हूं। मैंने अधिकांश उपयोगकर्ता परिभाषित सी संरचनाओं को सफलतापूर्वक छुपाया है, लेकिन एक बिंदु है जहां मुझे सी संरचनाओं का उपयोग करना है। मैं अजगर के लिए नया हूं इसलिए मुझे चीजें गलत हो सकती हैं।
मेरा दृष्टिकोण सीटीपी का उपयोग करके अजगर में कुछ संरचनाओं को फिर से परिभाषित करना है, फिर चर को मेरे डीएलएल में पास करना है। हालांकि इन वर्ग में मैं एक कस्टम लिंक्ड सूची जो, का पालन के रूप में
class EthercatDatagram(Structure):
_fields_ = [("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", EthercatDatagram)]
यह विफल रहता है पुनरावर्ती प्रकार होते हैं क्योंकि अंदर EthercatDatagram, EthercatDatagram पहले से ही निर्धारित नहीं है तो पार्सर एक त्रुटि देता है।
मुझे इस लिखित सूची को पायथन में कैसे प्रस्तुत करना चाहिए ताकि मेरा डीएलएल इसे सही ढंग से समझ सके?
"संभव नहीं है (किसी भी भाषा में)" - यह सी/सी ++/जावा-स्टाइल structs या कक्षाओं के बारे में सच है, लेकिन बीजगणितीय डेटा प्रकार वाली भाषाओं में यह संभव नहीं है बल्कि यह भी बहुत आम है। जैसे 'डेटा सूची एक = विपक्ष एक (सूची ए) | एमएल-पारिवारिक भाषाओं में नील '(ओकमल/हैकसेल/एसएमएल/आदि)। – sinelaw