在Python中调用VB DLL

3

我有一个在VB中编写的函数,已经转换成了dll文件,现在想在Python中使用它。但是在尝试使用时,出现了错误信息。以下是VB函数的代码:

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相关的问题,但是到目前为止没有任何解决方法适用于我的问题。


你能从其他编程语言中访问这个dll吗? - Esteban Küber
你是否尝试检查你的函数是否被你的dll导出?使用Dependency Walker进行检查 http://www.dependencywalker.com/ - luc
你能确认它是VB6还是VB.net吗? - luc
@MPelletier 和其他的朋友们:你们可能找到了这个问题的解决方案吗?我也在和你们一样苦恼。谢谢。 - Intelligent-Infrastructure
@智能基础设施 对不起,我只是在这里进行清理 :) - MPelletier
2个回答

0

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


这不是解决方案 - 我想。IronPython是完全不同的软件包,而这里的问题是在Python中使用vb dll - 这似乎目前是不可能的。 - Intelligent-Infrastructure

0
可能是作用域问题,如果没有公共访问修饰符,该函数可能对外部调用者不可见。请尝试添加“public”修饰符。
Public Function DISPLAYNAME(Name)
MsgBox ("Hello " & Name & "!")
End Function

在你的 DLL 文件中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接