J'utilise rasade pour générer ma bibliothèque C, par exemple:rasade bibliothèque c et ctypes Uint8 type non valide
mylib.py et _mylib.pyd
int func(uint8_t* a)
{
return *a;
}
en python:
import mylib
import ctypes
a = (ctypes.c_uint8 * 8)()
mylib.func(a)
Mais en cours d'exécution Python me donne une erreur: TypeError: in method 'func', argument 1 of type 'uint8 *'
Je recherche les typemaps, et ajouter i t à mon fichier de module .i, comme ceci:
%module mylib
%include "typemaps.i"
extern int func(uint8_t* INPUT);
erreur python à être.
J'imprime ctypes.c_uint8 et j'imprime mylib uint8, et j'ai trouvé que mylib uint8 est un objet swig. Comment faire ce travail?
Les types de 'ctypes' ne sont pas compatibles avec' SWIG' comme vous essayez de les utiliser. Ils sont différents types. Je suggère d'inclure '% include" carrays.i "et% array_class (unsigner char, uint8ArrayClass)' dans votre fichier d'interface 'SWIG' et d'utiliser le' uint8ArrayClass (4) 'généré pour générer un tableau C enveloppé pour l'entrée par exemple. un tableau de longueur 4. –
Salut merci, pourriez-vous me montrer un texte simple? –
Regardez dans le manuel swig rechercher les mots-clés que j'ai fournis –