Ich kämpfe schon in VB zu schaffen, die für Python zu sehen sein wird,VB DLL nicht funktioniert in Python mit ctypes (Funktion * nicht gefunden)
keiner von VB-Funktionen sichtbar sind, wenn ich schon in Python importieren
Hier ist, was ich tue:
- Simplest je VB Klasse
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`
ich es als DLL (Build von Visual Studio 2010)
speichere ich versuchen, wenn es durch den Import es in othoer VB-Projekt arbeitet (es funktioniert) :
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
-
und versuchen, es zu benutzen:
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
statt MyDll.MyFunctions i auch versucht: MyDll.MyFunctions() , MyDll.MyFunctions.AddMyValues(1,2) , MyDll.MyFunctions.AddMyValues
.
Was ist hier falsch? Ich verstehe es nicht.
PS. es ist ähnlich ungelöstes Problem: calling vb dll in python
PS. Wenn ich dll es als eine COM registriere es ist in Ordnung –
Vielleicht helfen diese Artikel: [Wie Export von .NET-Funktion zu nicht verwalteten Programmen zu automatisieren] (http://www.codeproject.com/Articles/16310/How-to-Automate -Exportieren-NET-Function-to-Unmanage) und [Unmanaged Code kann verwaltete Methoden umhüllen] (http://www.codeproject.com/Articles/8124/Unmanaged-code-can-wrap-managed-methods). – eryksun