2010-01-16 16 views
15

मैं अजगर में सी # डीएल कैसे लोड कर सकता हूं?पायथन में सी # डीएल कैसे लोड करें?

क्या मुझे सी # फाइलों में कुछ अतिरिक्त कोड डालना है? (सी ++ फाइलों में निर्यात की तरह)

मैं आयरनपीथन का उपयोग नहीं करना चाहता हूं। मैं पाइथन के लिए एक मॉड्यूल आयात करना चाहता हूँ!

+0

आप कुछ स्पष्टीकरण जोड़ना चाहेंगे। क्या हम * सीपीथन * या * आयरनपीथन * के बारे में बात कर रहे हैं? –

+0

मैं पाइथन में एक मॉड्यूल आयात करना चाहता हूं (तब आयरनपीथन नहीं ..) –

+0

आप संघर्ष करने जा रहे हैं। सी # डीएलएल सीआईएल में लिखा गया है और पाइथन नहीं है, न ही यह अजगर द्वारा पठनीय है। आप या तो .NET को पूरा करने जा रहे हैं और आयरनपीथन का उपयोग कर रहे हैं या COM का उपयोग करने के दर्द का सामना कर रहे हैं। क्या कोई तरीका नहीं है कि आप देशी पायथन मॉड्यूल का उपयोग कर सकते हैं? –

उत्तर

4

यह आपके प्रश्न के दूसरे भाग का उत्तर देना है DLL COM को दृश्यमान बनाने का प्रयास करें।

[ComVisible(true)] 

ठीक IronPython का उपयोग करके अजगर भाषा प्रौद्योगिकी के पहुंचने .net 4.0 का डीएलआर का उपयोग करें ताकि IronPython अधिक गतिशीलता होगा जा रहा है की एक .net implemenatation (है वह एक शब्द)। (अंग्रेजी में यदि आप पाइथन गुरु हैं, तो आप आयरनपीथन का उपयोग करते समय घर पर और अधिक महसूस करेंगे)

तो यदि आप ऐसा करते हैं तो आप COM दृश्यमान भाग को छोड़ सकते हैं, तो आप आयरनपीथन चुन सकते हैं। चूंकि दोनों (सी #, आयरन पायथन) नेट

तहत

http://ironpython.net/

Visit here for a sample C# DLL which is visible to COM

+0

अब मैंने आयरनपीथॉन को देखा है कि मुझे समझ में आया कि यह क्या था। मुझे वह नहीं चाहिए। मैं पायथन में एक मॉड्यूल आयात करना चाहता हूं: पी –

+0

आपका मतलब है पाइथन में आयात (पोर्ट) सी # कोड या पाइथन –

+0

पर सी # डीएल आयात करें पायथन –

4

Python for .NET काम करता है आप IronPython का उपयोग नहीं करना चाहते हैं अच्छी तरह से करता है, तो कर रहे हैं।

16

पैकेज Python for.NET और पायथन कार्यान्वयन IronPython अब वही काम करता है। एक सी # DLL MyDll.dll के लिए

उदाहरण:

import clr 
clr.AddReference('MyDll') 
from MyNamespace import MyClass 
my_instance = MyClass() 

अधिक जानकारी के लिए this post देखें।

+1

पर काम नहीं करता है, इसे पहले 'pip3 इंस्टॉल पायथननेट' – Felix

1

यदि आप पाइथन .NET या IronPython जैसे समाधानों का उपयोग नहीं करना चाहते हैं तो इसे C++/CLI wrapper को लागू करना संभव है और इसे लोड करने के लिए पायथन कॉटीप्स का उपयोग करना संभव है। उदाहरण के लिए:

C++/CLI पुस्तकालय CallCSharp:

extern "C" { 
    __declspec(dllexport) void foo() 
    { 
     // here you could use managed and unmanaged code 
     Console.WriteLine("Hello, C# world..."); 
    } 

पायथॉन लिपि:

from ctypes import cdll 
lib = cdll.LoadLibrary("./CallCSharp.dll") 
lib.foo() 

मैं दृढ़ता से इस ब्लॉग को पढ़ने recomment: http://pragmateek.com/if-your-plumbing-doesnt-work-youre-just-not-using-enough-pipes/#more-1745

यह भी संभालती है मुद्दा तब उत्पन्न होता है जब सी ++/सीएलआई रैपर कोड को कॉल करता है जो किसी अन्य असेंबली में होता है (आपको हवा की तरह कुछ मिलता है ows त्रुटि: [त्रुटि -532462766] Windows Python स्क्रिप्ट से Windows त्रुटि 0xE0434352)।

+0

द्वारा मोनो और .NET कोर पर काम करता है? – denfromufa

+0

पता नहीं है। और मैंने पहले ही उस दृष्टिकोण को छोड़ दिया है, मुझे संदर्भित असेंबली चलाने की लोडिंग नहीं मिली है। मैं पायथन .NET को समझने की कोशिश करूंगा। – anhoppe

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