在Python中调用VB DLL

3 投票
2 回答
4384 浏览
提问于 2025-04-15 14:00

我有一个用VB写的函数,已经转换成了一个dll文件,我想在Python中使用它。但是在尝试使用的时候,我遇到了一个错误信息。

Function DISPLAYNAME(Name)
MsgBox ("Hello " & Name & "!")
End Function

这是我在Python中调用它的方式。

from ctypes import *
test = windll.TestDLL
print test
print test.DISPLAYNAME("one")

但是我遇到了错误,那么调用这个dll的正确方法是什么呢?

Traceback (most recent call last):
  File "C:\Test\testdll.py", line 4, in <module>
    print test.DISPLAYNAME("one")
  File "C:\Python26\lib\ctypes\__init__.py", line 366, in __getattr__
    func = self.__getitem__(name)
  File "C:\Python26\lib\ctypes\__init__.py", line 371, in __getitem__
    func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'DISPLAYNAME' not found

我在网上查了很多资料,但到现在为止还没有找到解决办法。不能用cdll,因为这个是给C程序用的。

我也看了一些关于Python和dll相关的问题,但到目前为止没有任何解决方案适合我的问题。

2 个回答

0

我不知道你具体问题的答案,但如果你使用的是VB.NET,你可以直接在IronPython中调用它。

0

这可能是一个作用域的问题。如果没有使用公共访问修饰符,这个函数可能对外部调用者不可见。你可以试试

Public Function DISPLAYNAME(Name)
MsgBox ("Hello " & Name & "!")
End Function

在你的dll里

撰写回答