probleme d'utilisation de DLL developpées en C++ avec python
bonjour a tous,
je me forme à python depuis le debut de la semaine et j'utilise SPE comme IDE sous windows.
j'ai déja bien avancé mais je suis face à un problème que je n'arrive pas a résoudre.
On m'a fourni des DLL développé sous visual c++ (ainsi que les sources) et j'essaye d'importer les fonctions de cette DLL.
j'ai fais pas mal de recherche et j'ai trouvé "ctypes"
voila mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
>>>from ctypes import *
>>>essai = cdll.load("fichier.dll", mode=None)
>>>essai.Close()
Traceback (most recent call last):
File "<input>", line 1, in ?
File "C:\Python24\Lib\site-packages\ctypes\__init__.py", line 313, in __getattr__
return self.__getitem__(name)
File "C:\Python24\Lib\site-packages\ctypes\__init__.py", line 316, in __getitem__
func = self._FuncPtr(name, self)
AttributeError: function 'Close' not found |
alors que dans le fichier .h des sources, cette fonction close existe :
Code:
1 2 3 4 5 6 7
| public:
unsigned char Init (void* pCanal, CString num_port, int vitesse, int iNbRepMaxParam, int timeout_rec, int timeout_ack, int nb_err_max, DATAREC_CALLBACK setDataRec);
unsigned char Close (void);
unsigned char Relance (void);
unsigned char Send (unsigned char *buff_emi, unsigned char longueur);
unsigned char Receive (unsigned char *buffer_donnees, int *longueur); |
je ne comprend pas comment faire pour utiliser ce module ctypes...
alors si vou spouviez m'aider :)
merci
Pas de réponse pour l'instant, mais j'ai une question
J'ai beau chercher, je ne trouve pas beaucoup de littérature ou d'exemple sur l'import de DLL dans un programme en python. J'ai bien vu qqch sur SWIG mais ça ne me parait pas trivial.
J'ai essayé de suivre ta méthode, mandagor, mais je bloque bien avant toi puisque ma DLL n'est pas trouvée même en indiquant le chemin complet (cf . ci-après).
Code:
1 2 3 4 5 6 7 8
| Traceback (most recent call last):
File "D:\Dev\Python\CreeListe.py", line 23, in <module>
essai = cdll.load('D:/Dev/Python/DLLProtect.dll', mode=None)
File "C:\Python25\lib\ctypes\__init__.py", line 364, in __getattr__
dll = self._dlltype(name)
File "C:\Python25\lib\ctypes\__init__.py", line 290, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Error 22] Le module spécifié est introuvable |
Je suis malheureusement complètement débutante en python et loin d'être un cador en prog Windows.
Quelqu'un peut-il m'aider à démarrer ?
:bug:
D'avance merci