2009-09-01 8 views
3

J'ai donc une fonction dans vb qui est convertie en dll que je veux utiliser en python. Cependant essayer de l'utiliser, je reçois un message d'erreur c'est la fonction VBappelant vb dll en python

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

et voici comment je l'appelle en python

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

Mais je reçois des erreurs alors quelle est la bonne façon d'appeler le 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 

J'ai regardé autour de ligne mais aucune solution jusqu'ici. Impossible d'utiliser cdll puisque c'est pour c progs.

J'ai regardé quelques-unes des questions liées à python et dll mais aucune solution jusqu'à présent ne fonctionne pour mon problème.

+0

Pouvez-vous accéder au 'dll' d'autres langues? – voyager

+0

Avez-vous essayé de vérifier que votre fonction est exportée par votre DLL? Vérifiez avec le dépendant de la dépendance http://www.dependencywalker.com/ – luc

+0

Pouvez-vous confirmer si c'est VB6 ou VB.net? – luc

Répondre

0

Je ne sais pas la réponse à votre question spécifique, mais si c'est VB.NET, vous pouvez l'appeler nativement en IronPython.

+0

Ce n'est pas la solution - je suppose. IronPython est un package complètement différent, et le problème ici est d'utiliser vb dll en python - ce qui semble impossible pour le moment. –

0

Cela peut être un problème de portée, sans le modificateur d'accès public, la fonction peut ne pas être visible pour les appelants externes. Essayez

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

dans votre dll