我很难在VB中创建dll,这对于python来说是可见的,
将dll导入python
时,没有任何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`
我将其另存为dll(从Visual Studio 2010构建)
我尝试通过将其导入到其他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
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。还有类似的未解决问题:calling vb dll in python
答案 0 :(得分:5)
你不能这样做。您正在生成的DLL是.NET程序集,或者,如果您公开COM接口,它是一个COM组件。
Python的ctypes
模块仅支持C ABI DLLs。
答案 1 :(得分:0)
在您的dll上使用dumpbin.exe
,使用/exports
或/linkermember
选项查看DLL中实际导出的名称是什么。