Bonjour à tous,
Je souhaiterais créer un module python à l'aide de l'API/C et c'est réussi du côté Unix. Voilà le déroulement ci-dessous…
functions.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <python3.4/Python.h> #include <stdio.h> PyObject *stripChar(const char *s, char c) { int i, j=0; char res[2048]; for (i=0; s[i]!='\0'; i++) { if (s[i] != c) { res[j] = s[i]; j++; } } res[j] = '\0'; return PyBytes_FromString(res); } |
Puis
1 2 | gcc -c functions.c -fPIC ld -o functions.so -shared functions.o -lpython3.4m |
functions.py
1 2 3 4 5 6 7 8 9 10 11 | from ctypes import * dll = CDLL('/home/fred1599/functions.so') strip = dll.stripChar strip.restype = py_object strip.argstype = [py_object, py_object] def myStrip(myStr, myChar): myStr = c_char_p(myStr) myChar = c_char(myChar) return strip(myStr, myChar) |
Tout fonctionne, ma question est en rapport avec le fait que je ne veux pas changer d'environnement de travail, je n'ai pas windows ! Je voudrais donc créer une librairie (dll) me permettant d'utiliser la fonction myStrip autant sous Unix que sous Microsoft.
Cette fonction fait office d'exemple, vous l'aurez bien compris afin d'avoir une manière simple de faire du cross compiling sous Ubuntu, mon système d'exploitation.
Quelle est pour vous la meilleure façon de faire ?
+0
-0