J'ai un fichier C qui est enveloppé avec swig. Ce fichier C contient une API avec un pointeur de fonction en tant qu'argument (illustré ci-dessous).Interopérabilité entre les types ctypes et swig pour python
example.c
int binary_op (int a, int b, int (*op)(int,int))
{
return (*op)(a,b);
}
Je mapper une fonction à l'argument de pointeur à condition que la fonction de mappage est défini en même fichier en utilisant rasade. Mais la fonction de mappage est définie dans un autre fichier C qui est encapsulé avec Ctypes.
testing.c
int add_int(int a, int b){
return a+b;
}
En Python, j'importé module généré de rasade et appelle l'API avec ctypes générée par la fonction de mappage, elle a entraîné une erreur.
Dans testfile.py
import example # Module generated by swig
from ctypes import *
wrap_dll = CDLL('testing.dll') # testing.dll is generated with File_2.c
# Mapping function 'add_int' to argument in 'binary_op'
example.binary_op(3,4,wrap_dll.add_int)
L'erreur indiqué est un type d'argument ne correspond pas à.
TypeError: in method 'binary_op', argument 3 of type 'int (*)(int,int)'
Nous avons une erreur, pas de code et pas de question. Un sur trois pour un [mcve], essayez de faire mieux. – Anthon
Rechercher ici pour le rappel, SWIG et Python et vous trouverez quelque chose que vous pouvez utiliser. C'est là –
@JensMunk: J'ai beaucoup cherché calme mais rien ne semble lié. Toute aide serait appréciée au cas où vous pourriez me guider vers des choses connexes. Merci –