2013-03-11 10 views
5

मैं VB में dll जो अजगर के लिए दिखाई देंगी बनाने के लिए संघर्ष,वीबी dll does not काम (समारोह * नहीं मिला)

वीबी कार्यों में से कोई भी दिखाई दे रहा है जब मैं अजगर में dll आयात कर रहे हैं

यहाँ मैं क्या करना है:

  1. सरल कभी वीबी वर्ग
Public Class MyFunctions 
     Public Function AddMyValues(ByVal Value1 As Double, ByVal Value2 As Double) 
      Dim Result As Double 
      Result = Value1 + Value2 
      Return Result 
     End Function 
    End Class` 
  1. मैं इसे एक dll के रूप में सहेजने

  2. (विजुअल स्टूडियो 2010 से निर्माण) मैं कोशिश करता है, तो यह othoer वीबी परियोजना में आयात करने से काम करता है (यह ठीक काम करता है) :

Imports ClassLibrary1 
Module Module1 

    Sub Main() 
     Dim Nowa As New ClassLibrary1.MyFunctions 

     Dim Result As String 
     Result = Nowa.AddMyValues(123, 456.78).ToString 
     Console.WriteLine(Result) 
     Console.ReadLine() 
    End Sub 

End Module 
  1. मैं इसे अजगर में लोड और इसे इस्तेमाल करने की कोशिश:
from ctypes import * 
MojaDLL = cdll.LoadLibrary("E:\\ClassLibrary1.dll") 
MojaDLL.MyFunctions 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "C:\Python25\lib\ctypes\__init__.py", line 361, in __getattr__ 
    func = self.__getitem__(name) 
    File "C:\Python25\lib\ctypes\__init__.py", line 366, in __getitem__ 
    func = self._FuncPtr((name_or_ordinal, self)) 
AttributeError: function 'MyFunctions' not found 
MyDll.MyFunctions मैं भी करने की कोशिश की करने के बजाय

: MyDll.MyFunctions() , MyDll.MyFunctions.AddMyValues(1,2) , MyDll.MyFunctions.AddMyValues

क्या गलत है? मुझे समझ में नहीं आता

पीएस। वहाँ इसी तरह अनसुलझी समस्या है: अपने dll पर calling vb dll in python

+0

पीएस। जब मैं इसे COM के रूप में पंजीकृत करता हूं तो यह ठीक है –

+0

शायद ये लेख मदद करेंगे: [अप्रबंधित कार्यक्रमों के लिए .NET फ़ंक्शन निर्यात करने के लिए स्वचालित रूप से कैसे करें] (http://www.codeproject.com/Articles/16310/How-to-Automate - निर्यात-नेट-फ़ंक्शन-टू-अनमैनेज) और [अप्रबंधित कोड प्रबंधित विधियों को लपेट सकता है] (http://www.codeproject.com/Articles/8124/Unmanaged-code-can-wrap-managed-methods)। – eryksun

उत्तर

0

उपयोग dumpbin.exe, /exports या शायद /linkermember विकल्प के साथ क्या DLL में वास्तविक निर्यात नाम हैं देखने के लिए।

5

आप यह नहीं कर सकते हैं। आप जिस डीएलएल का उत्पादन कर रहे हैं वह एक .NET असेंबली है, या, यदि आप COM इंटरफ़ेस का पर्दाफाश करते हैं, तो यह एक COM घटक है।

पायथन का ctypes मॉड्यूल केवल C ABI DLLs का समर्थन करता है।

+0

aaaah:/तो क्या कोई तरीका है कि मैं पाइथन में vb dll का उपयोग कर सकता हूं? COM से Aprat, जो कि मजबूत नहीं है (नाम पंजीकरण, एक डीएल प्रति नाम, हार्ड अपडेट इत्यादि) –

+0

@ इंटेलिजेंट-इंफ्रास्ट्रक्चर पाइथन के लिए एक .NET बाध्यकारी हो सकता है लेकिन मुझे वास्तव में संदेह है - COM लगता है एकमात्र रास्ता होना –

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