Le problème est le suivant

- Je dispose d'une dll existante ( à utiliser tel quelle)
- J'utilise le module "ctypes" pour appeler des fonctions de cette dll.Cela se passe tres bien tant que les types des arguments sont des entiers, des caractères ou tableau d'entiers.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
lib.fonctionA.argtypes = [c_uint32,c_uint32]
lib.fonctionA.restype = c_uint32
ib.fonctionA(arg1, arg2)
- Les difficultés surviennent lorsqu'une fonction X prend des arguments de types un peu plus complexes
ex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
typedef struct {
  int Mac_Address[6]; 
  int IP_Address[4];
  int UDP_Port;
} IS_Port_struct;
 
typedef struct {
  IS_Port_struct Transmit; 
  IS_Port_struct Receive;
} IS_Set_Ports_struct;
Sur un conseil il ma été proposé de wrapper la structure complexe avec SWIG (extension pour interfacer le C et le Python), pour quelle puisse ensuite être passée en parametre

- Le wrapping se passe bien, j'arrive à instancier des objects de cette structure
- Le passage en arguments à la fonction X ne marche toujours pas

J'obtiens les erreurs suiivantes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
lib.fonctionXs.argtypes = [c_uint32,type(wrapped_struct)]
-->"item 2 in _argtypes_ has no from_param method"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
ib.fonctionXs(arg1, arg2)]
-->"Don't know how to convert parameter 2"

Voilà

Question
- Que faire pour pouvoir utiliser cette fonction?
- La methode "ctypes" peut elle prendre un object de type swig?