2010-03-22 13 views
19

मैं एक अनुभवी नेट प्रोग्रामर हूं, लेकिन मेरे जीवन में एक सी/सी ++ प्रोग्राम संकलित नहीं किया है। अब मेरे पास यह सी-डीएल, हेडर और प्रलेखन (तृतीय पक्ष, विन एपीआई से नहीं) है, जिसमें से मुझे दस विधियों को कॉल करने की आवश्यकता है।पी/कोड कोड उत्पन्न करने का सबसे आसान तरीका?

मैं प्लेटफ़ॉर्म इनवॉक का उपयोग करने के बारे में सोच रहा था।

और संभवतः

पिनवोकर इंटरऑप सहायक और जादूगर की तुलना में थोड़ा अलग दृष्टिकोण प्रतीत होता है। स्विग मैंने अभी पाया जब यह जांच कर रही है कि इस सवाल से यहां नहीं पूछा गया है।

इन उपकरणों के पेशेवरों और विपक्ष क्या हैं?

पी/Invoke कोड का उत्पादन करने के लिए मेरे लिए सबसे अच्छा = सबसे आसान और सुरक्षित तरीका क्या होगा जो मुझे सी/सी ++ के बारे में ज्यादा नहीं पता?

+0

दर्पण codeplex नीचे है: https://drive.google.com/file/d/0B_OGphRNB0qPcWU1QVFKLS1NeWs/view?usp=sharing –

उत्तर

4

एक इंटरऑप उदाहरण के लिए http://dotnetperls.com/dllimport-interop और अधिक जानकारी के लिए यह MSDN article देखें। इस सामान के लिए बाइबल Adam Nathan'sbook है।

असल में आपको डीएलएल में उन कार्यों की पहचान करने की आवश्यकता होगी जिन्हें आप कॉल करना चाहते हैं। इन्हें बाहरी दुनिया के लिए सुलभ बनाने के लिए बाहरी के साथ चिह्नित करने की आवश्यकता है। अगला कदम, जो मुश्किल हो सकता है फ़ंक्शन के लिए एक DllImport लिख रहा है। इसे प्रबंधित और अप्रबंधित दुनिया के बीच मैप करने की जरूरत है। आपको सी डीएल से प्रबंधित कोड में किसी भी जटिल डेटा संरचनाओं को मार्शल करने का तरीका जानने की आवश्यकता होगी।

आपको यह देखने के लिए जांचना चाहिए कि क्या डीएलएल में कोई भी प्रकार का COM इंटरफ़ेस है या नहीं। सुनिश्चित करें कि आपको वास्तव में पहले पी/Invoke का उपयोग करने की आवश्यकता है।

एसडब्ल्यूआईजी मूल रूप से स्क्रिप्टिंग भाषाओं से उपयोग के लिए सी/सी ++ कोड लपेटने के लिए था। यह एक इंटरफेस विवरण से सी # कोड उत्पन्न करता है (tutorial देखें)। यदि पी/Invoke एक विकल्प है तो मैं इसे सी # से उपयोग करने की अनुशंसा नहीं करता।

+0

नहीं, कोई COM-इंटरफ़ेस नहीं है। एक मूल सी-डीएल कॉल करने की आवश्यकता है। – Ope

2

यदि कार्यों के हस्ताक्षर सरल हैं तो इसे सेटअप में 10 मिनट लग सकते हैं - यानी यदि वे 2 char * लेते हैं और एक int वापस करते हैं। इसका केवल एक बार वे जटिल है कि यह हो जाता है मिलता है गंदा

PInvoke पर बाईबल Adam Nathans - .NET and COM: The Complete Interoperability Guide

है और मैं अन्य पोस्टर से सहमत - बड़ा घूँट सही बात नहीं है

मामले में पी/आह्वान इंटरॉप सहायक के लिए
+0

इंटरफेस सरल नहीं हैं: जटिल इनपुट और आउटपुट संरचनाएं। या सुपर-कॉम्प्लेक्स नहीं, लेकिन प्रत्येक कॉल में 3-6 पैरा, उनमें से कुछ कई मानकों के साथ संरचनाएं हैं। तो मुझे वास्तव में पीढ़ी में मदद चाहिए। – Ope

+1

क्या आप यहां फ़ंक्शन हस्ताक्षर पोस्ट कर सकते हैं? आप उन्हें कुछ हद तक खराब कर सकते हैं। –

+0

मुझे इसे जांचना होगा। लेकिन हस्ताक्षर (+ संबंधित structs) लगभग 100 लाइनें हैं। क्या आप कह रहे हैं कि ये पीढ़ी के उपकरण मूल रूप से अच्छे नहीं हैं (यदि ऐसा है तो?)। या मुझे इन उपकरणों का उपयोग करने के बजाय हाथ रेखा-दर-रेखा और पैरामीटर-दर-पैरामीटर द्वारा प्लबिंग करने वाले सभी को क्यों करना चाहिए? – Ope

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