2012-10-17 19 views
8

से डेल्फी/FreePascal इंटरफ़ेस इकाई बनाने यह स्वचालित रूप से सी हेडर फाइल से इंटरफ़ेस इकाइयों उत्पन्न करने के लिए संभव है? विशेष रूप से, मैं HDF5 पुस्तकालय लपेट करना चाहते हैं, और यह बहुत अच्छा है कि अगर मैं इंटरफ़ेस इकाई मैन्युअल लेखन से बच सकते हैं होगा।स्वचालित रूप से सी हेडर फाइल

+0

कि एक बहुत बड़े और जटिल पुस्तकालय की तरह दिखता है। मैं आश्वस्त रूप से भविष्यवाणी करूंगा कि कोई ऐसा उपकरण नहीं है जो एक अच्छा और व्यापक अनुवाद करता हो। –

+1

एचडीएफ लाइब्रेरी के संस्करण 4 के डेल्फी का आंशिक अनुवाद है [यहां] (http://dspatial.sourceforge.net/)। आप इसे 'ड्राइवर्स' फ़ोल्डर के नीचे पाएंगे। यह अनुवाद के पहले चरण के रूप में कार्य कर सकता है। –

+0

समस्या एचडीएफ 4 और एचडीएफ 5 उनके नाम पर * एचडीएफ * को छोड़कर कुछ भी साझा नहीं करती है ... –

उत्तर

11

मुक्त पास्कल में H2PAS उपकरण शामिल है।

h2pas एक पास्कल इकाई के लिए एक सी हेडर फाइल कन्वर्ट करने के लिए प्रयास करता है। यह सबसे संभाल कर सकते हैं सी निर्माण करती है कि एक उन्हें अपने पास्कल समकक्षों के अनुवाद करने के लिए प्रयास एक सी हेडर फाइल में पाता है, और। (वहाँ हालांकि आम तौर पर कुछ शारीरिक श्रम के रूप में अच्छी तरह से शामिल) HeaderConvert बुलाया

+0

यह मेरे द्वारा उपयोग किए जाने वाले अन्य उपकरणों की तुलना में बेहतर तरीका है, लेकिन व्यावहारिक रूप से आपको अभी भी बहुत से पोस्ट प्रोसेसिंग की आवश्यकता है। –

+0

यह जाने का रास्ता दिखता है। मैं देखता हूं कि यह वास्तव में मुझे कितना दूर ले जाता है ... –

5

बॉब द्वेषपूर्ण() एक उपयोगिता जो हेडर फाइल का एक बहुत में परिवर्तित कर देंगे है। मैं यह उपकरण @RRUZ लिंक करने के लिए कभी नहीं की तुलना में है, लेकिन यह एक और विकल्प है।

Project JEDI में भी एक है; मैंने कभी इसका परीक्षण नहीं किया है। आप इसे here पा सकते हैं।

+0

जेडी एक मूल रूप से हेडकॉन्व जैसा ही है। –

5

सामान्य में पूरी तरह से कुछ और करने के लिए सी हेडर की अनुवाद स्वचालित (कि जरूरत सी कार्यक्षमता का एक प्रभावी सुपरसेट नहीं है) असंभव करना मुश्किल है।

क्योंकि मैक्रोज़ के कारण कोई उन्हें अनुवाद नहीं कर सकता है। मैक्रोज़ अक्सर संदर्भ से अपना अर्थ प्राप्त करते हैं। उदाहरण

#define uglymacro 1,2,3,4 

बल्कि (और यह एक अधिक सामान्य है):

SCARYAPIMACRO void func(int c); 

SCARYAPIMACRO तो अक्सर ऐसा मैक्रो परीक्षण ओएस सही ओएस/वास्तुकला के लिए सही बुला सम्मेलन को चुनने के लिए परिभाषित करता है।

फिर भी, इसका मतलब यह नहीं है कि उपकरण वास्तविक समय-समय पर नहीं हैं। लेकिन परिणाम और अधिक अर्ध स्वचालित है, मैं h2pas के साथ सबसे अधिक और सबसे अच्छा अनुभव है।

मैंने कई विंडोज हेडर का अनुवाद किया है (एफपीसी के कम्युनिकेशन सहित जिसमें प्रत्येक कुछ पंक्तियां प्रेषण मैक्रो है)।

मैं आमतौर पर जो करता हूं वह एक छोटे पास्कल प्रोग्राम को तैयार करता है जो स्रोत लाइन को स्कैन करता है और हेरिस्टिक का उपयोग उन हिस्सों में विभाजित करने के लिए करता है जो ज्यादातर सजातीय होते हैं (सभी structs या स्थिरांक, मैक्रोज़, प्रक्रिया घोषणा आदि)। फिर मैं स्रोत को देखता हूं और अक्सर कुछ वैश्विक विकल्प करता हूं।

केवल तभी मैं इसे अनुवादक के माध्यम से चलाता हूं, प्रक्रिया अक्सर पुनरावृत्ति होती है (पृथक्करण को परिष्कृत करें, वैश्विक प्रतिस्थापन करें, अनुवाद करने का प्रयास करें, अगर यह विफल हो जाए, फिर कोशिश करें आदि)।

दुर्भाग्यवश प्रक्रिया को सी की अच्छी समझ की आवश्यकता होती है, प्रगा सामग्री शामिल है।

संबंधित मुद्दे