5

我很难在 VB 中创建对 python 可见的 dll,

当我将 dll 导入 python 时,没有一个 VB 函数可见

这就是我所做的:

  1. 有史以来最简单的 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`
  1. 我将其保存为 dll(从 Visual Studio 2010 构建)

  2. 我尝试通过将其导入到其他 VB 项目中是否可以工作(它工作正常):

    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. 我将它加载到 python 中并尝试使用它:
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

这里有什么问题?我不明白。

PS。有类似的未解决问题:在python中调用vb dll

4

2 回答 2

5

你不能做这个。您生成的 DLL 是一个 .NET 程序集,或者,如果您公开一个 COM 接口,它就是一个 COM 组件。

Python 的ctypes模块仅支持C ABI DLLs

于 2013-03-24T13:44:59.330 回答
0

dumpbin.exe在您的 dll 上使用,或者/exports可以/linkermember选择查看 DLL 中实际导出的名称是什么。

于 2013-03-24T13:23:34.517 回答