Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
exemple_python_cpp [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


exemple_python_cpp

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
exemple_python_cpp [2013/10/18 07:43]
tyrtamos
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://docs.python.org/2/extending/]]
 +
 +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://docs.python.org/3/extending/]]
  
 ===== Préparation du code C++ ===== ===== Préparation du code C++ =====
Ligne 67: Ligne 73:
 Pour la fonction "fact": Pour la fonction "fact":
 <code cpp> <code cpp>
-//=========================================================================== 
 // encapsulation de la fonction 'fact' pour utilisation par Python // encapsulation de la fonction 'fact' pour utilisation par Python
  
Ligne 80: Ligne 85:
 Et pour la fonction "pgcd": Et pour la fonction "pgcd":
 <code cpp> <code cpp>
-//=========================================================================== 
 // encapsulation de la fonction 'pgcd' pour utilisation par Python // encapsulation de la fonction 'pgcd' pour utilisation par Python
  
Ligne 93: Ligne 97:
 Et c'est tout! Voilà le code complet du module "**testext.cpp**" Et c'est tout! Voilà le code complet du module "**testext.cpp**"
  
-<code cpp cpp>+<code cpp>
  
 // creation d'un module en C++ pour importation dans Python // creation d'un module en C++ pour importation dans Python
Ligne 170: Ligne 174:
  
 from distutils.core import setup, Extension from distutils.core import setup, Extension
- 
  
 ext_modules = [Extension('testext',  ext_modules = [Extension('testext', 
Ligne 183: Ligne 186:
      )      )
 </code> </code>
 +
 +Vous voyez que le choix du "C++" est signalé dans le setup
  
 ===== Compilation ===== ===== Compilation =====
Ligne 196: Ligne 201:
 Python prendra le compilateur par défaut. Si vous avez Visual Studio de Microsoft (comme moi), c'est lui qui sera utilisé (ça fonctionne très bien!). Mais si vous voulez MinGW au lieu de Visual Studio, il y a 2 choses à faire: Python prendra le compilateur par défaut. Si vous avez Visual Studio de Microsoft (comme moi), c'est lui qui sera utilisé (ça fonctionne très bien!). Mais si vous voulez MinGW au lieu de Visual Studio, il y a 2 choses à faire:
  
-1- créer un fichier texte "**setup.cfg**" contenant:+1- créer un fichier texte "**setup.cfg**" placé au même niveau que setup.py, et contenant:
  
 <code> <code>
Ligne 203: Ligne 208:
 </code> </code>
  
-2 corriger le fichier C:\Python27\Lib\distutils\cygwinccompiler.py pour retirer toute mention de l'option -mno-cygwin si elle génère une erreur.+2corriger le fichier C:\Python27\Lib\distutils\cygwinccompiler.py pour retirer toute mention de l'option "-mno-cygwinsi elle génère une erreur.
  
 Moyennant quoi, chez moi, ça marche avec les 2 compilateurs. Moyennant quoi, chez moi, ça marche avec les 2 compilateurs.
exemple_python_cpp.txt · Dernière modification: 2013/10/18 19:04 de tyrtamos