walczę stworzyć dll w VB, który będzie widoczny dla Pythona,VB praca dll robi w Pythonie z ctypes (funkcja * nie znaleziono)
żadna z funkcji VB są widoczne, kiedy import dll do pytona
Oto, co zrobić:
- najprostszy kiedykolwiek klasa Vb
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`
zapisać go jako DLL (Build z Visual Studio 2010)
Staram czy działa importując go do othoer projektu VB (działa poprawnie) :
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
- załadować go do pytona i spróbować go użyć:
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
zamiast MyDll.MyFunctions Próbowałem również: MyDll.MyFunctions() , MyDll.MyFunctions.AddMyValues(1,2) , MyDll.MyFunctions.AddMyValues
.
Co jest nie tak? Nie rozumiem tego.
PS. Podobny problem jest nierozwiązany: calling vb dll in python
PS. Kiedy rejestruję go jako COM, to działa dobrze –
Może te artykuły pomogą: [Jak zautomatyzować eksportowanie funkcji .NET do niezarządzanych programów] (http://www.codeproject.com/Articles/16310/How-to-Automate -Exporting-NET-Function-to-Unmanage) i [Unmanaged code może owijać zarządzane metody] (http://www.codeproject.com/Articles/8124/Unmanaged-code-can-wrap-managed-metods). – eryksun