Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
exemple_python_cpp [2013/10/18 07:38] tyrtamos créée |
exemple_python_cpp [2013/10/18 07:58] tyrtamos |
||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
Python prévoit de pouvoir appeler directement un code en C ou en C++ avec distutils. Le mécanisme nécessaire pour ça est assez logique mais assez complexe au niveau syntaxe. La présente page traite un exemple simple en C++. | Python prévoit de pouvoir appeler directement un code en C ou en C++ avec distutils. Le mécanisme nécessaire pour ça est assez logique mais assez complexe au niveau syntaxe. La présente page traite un exemple simple en C++. | ||
+ | |||
+ | Documentation pour Python 2.7: [[http:// | ||
+ | |||
+ | C'est écrit pour Python 2.7, mais la conversion pour Python 3.3 ne devrait pas poser de problème. | ||
+ | |||
+ | Documentation pour Python 3.3: [[http:// | ||
===== Préparation du code C++ ===== | ===== Préparation du code C++ ===== | ||
Ligne 13: | Ligne 19: | ||
Ecrits en code C++ simple, voici les codes, placés dans un même fichier: **testext.cpp**: | Ecrits en code C++ simple, voici les codes, placés dans un même fichier: **testext.cpp**: | ||
- | < | + | < |
- | //########################################################################### | + | |
// fonction ' | // fonction ' | ||
Ligne 23: | Ligne 28: | ||
}; | }; | ||
- | //########################################################################### | ||
// fonction ' | // fonction ' | ||
Ligne 41: | Ligne 45: | ||
1- inclure l' | 1- inclure l' | ||
- | < | + | < |
#include " | #include " | ||
</ | </ | ||
Ligne 47: | Ligne 51: | ||
2- placer un code d' | 2- placer un code d' | ||
- | < | + | < |
PyMODINIT_FUNC inittestext(void) { | PyMODINIT_FUNC inittestext(void) { | ||
Py_InitModule(" | Py_InitModule(" | ||
Ligne 57: | Ligne 61: | ||
3- placer le code qui va donner les objets disponibles du module: | 3- placer le code qui va donner les objets disponibles du module: | ||
- | < | + | < |
static PyMethodDef testextMethods[] = { | static PyMethodDef testextMethods[] = { | ||
{" | {" | ||
Ligne 68: | Ligne 72: | ||
Pour la fonction " | Pour la fonction " | ||
- | < | + | < |
- | // | + | |
// encapsulation de la fonction ' | // encapsulation de la fonction ' | ||
Ligne 81: | Ligne 84: | ||
Et pour la fonction " | Et pour la fonction " | ||
- | < | + | < |
- | // | + | |
// encapsulation de la fonction ' | // encapsulation de la fonction ' | ||
Ligne 162: | Ligne 164: | ||
Malgré tout, ce ne sont que des exemples simples et purement numériques. Pour des codes plus complexes, il faudra faire un peu attention, en particulier au points suivants: | Malgré tout, ce ne sont que des exemples simples et purement numériques. Pour des codes plus complexes, il faudra faire un peu attention, en particulier au points suivants: | ||
* en cas d' | * en cas d' | ||
- | * en cas d' | + | * en cas d' |
- | Voilà le setup.py nécessaire à la compilation: | + | Voilà le "**setup.py**" |
<code python> | <code python> | ||
Ligne 172: | Ligne 174: | ||
from distutils.core import setup, Extension | from distutils.core import setup, Extension | ||
- | |||
ext_modules = [Extension(' | ext_modules = [Extension(' | ||
Ligne 185: | Ligne 186: | ||
) | ) | ||
</ | </ | ||
+ | |||
+ | Vous voyez que le choix du " | ||
===== Compilation ===== | ===== Compilation ===== | ||
Ligne 194: | Ligne 197: | ||
</ | </ | ||
- | Attention sous Windows: choix du compilateur | + | Attention sous Windows: |
- | Python prendra le compilateur par défaut. Si vous avez Visual Studio de Microsoft, c'est lui qui sera utilisé (ça fonctionne très bien!). Mais si vous voulez MinGW au lieu de VS, il y a 2 choses à faire: | + | Python prendra le compilateur par défaut. Si vous avez Visual Studio de Microsoft |
- | 1- créer un fichier texte " | + | 1- créer un fichier texte "**setup.cfg**" |
< | < | ||
Ligne 205: | Ligne 208: | ||
</ | </ | ||
- | 2 corriger le fichier C: | + | 2- corriger le fichier C: |
Moyennant quoi, chez moi, ça marche avec les 2 compilateurs. | Moyennant quoi, chez moi, ça marche avec les 2 compilateurs. |