Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

VB dll doesnt work in python with ctypes (function * not found)

I struggle to create dll in VB which will be visible for python,

none of VB functions are visible when I import dll into python

Here's what I do:

  1. Simplest ever VB class
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. I save it as a dll (Build from Visual Studio 2010)

  2. I try if it works by importing it into othoer VB project (it works fine):

    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. I load it into python and try to use it:
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

instead of MyDll.MyFunctions i also tried: MyDll.MyFunctions() , MyDll.MyFunctions.AddMyValues(1,2) , MyDll.MyFunctions.AddMyValues.

What's wrong here? I don't understand it.

PS. there's similar unsolved problem: calling vb dll in python

like image 875
Intelligent-Infrastructure Avatar asked Mar 11 '13 18:03

Intelligent-Infrastructure


1 Answers

You cannot do this. The DLL you’re producing is a .NET assembly, or, if you expose a COM interface, it’s a COM component.

Python’s ctypes module only supports C ABI DLLs.

like image 184
Konrad Rudolph Avatar answered Oct 05 '22 13:10

Konrad Rudolph