2009-09-01 2 views
3

Итак, у меня есть функция в vb, которая преобразуется в DLL, которую я хочу использовать в python. Тем не менее, пытаясь использовать его, я получаю сообщение об ошибке это функция VBвызов vb dll в python

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

и это, как я называю это в питона

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, но пока решение пока не работает.

+0

Вы можете получить доступ к 'dll' из других языков? – voyager

+0

Вы пытаетесь проверить, что ваша функция экспортируется вашей DLL? Проверьте его с помощью зависимого ходока http://www.dependencywalker.com/ – luc

+0

Можете ли вы подтвердить, что это VB6 или VB.net? – luc

ответ

0

Я не отвечаю на ваш конкретный вопрос, но если это VB.NET, вы можете изначально называть его IronPython.

+0

Это не решение - я полагаю. IronPython - совершенно другой пакет, и проблема здесь в том, чтобы использовать vb dll в python - что кажется невозможным на данный момент. –

0

Возможно, это проблема с областью определения, без модификатора Public access эта функция может быть недоступна внешним абонентам. Попробуйте

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

в вашей библиотеке DLL