17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Bonnes pratiques et optimisation du code<br />

CHAPITRE 13<br />

Pour pouvoir utiliser MingGW dans la phase de compilation, il est nécessaire :<br />

d’ajouter le répertoire bin de l’installation de MinGW au PATH ;<br />

de copier le fichier Python2x.dll dans le répertoire lib de MinGW ;<br />

d’ajouter un fichier distutils.cfg dans C:\python2x\lib\distutils\ avec ce<br />

contenu décrit ci-dessous.<br />

Fichier distutils.cfg<br />

[build]<br />

compiler=mingw32<br />

On obtient alors un environnement de compilation similaire à celui obtenu avec<br />

MVC++.<br />

À SAVOIR Vérification sous GNU/Linux<br />

Si vous avez installé Python sous GNU/Linux avec des binaires, vous devez vous assurer que le paquet<br />

python2.x-dev est installé.<br />

Binding de bibliothèque<br />

Pour utiliser des bibliothèques d’extensions il existe deux techniques :<br />

utiliser l’outil SWIG ;<br />

utiliser le module standard ctypes.<br />

SWIG<br />

L’outil SWIG (Simplified Wrapper Interface Generator) (http://www.swig.org/) permet<br />

de connecter un programme C ou C++ à plusieurs autres langages (Perl, Python, Tcl,<br />

Guile, Ruby, PHP, Objective Caml, Modula-3, C#, etc.).<br />

Pour qu’un programme C ou C++ soit utilisable par SWIG, il est nécessaire de créer<br />

un fichier interface, qui publie les éléments à lier. Ce fichier est utilisé pour générer le<br />

module d’extension.<br />

Prenons l’exemple du module exemple.c ci-dessous (issu de l’aide en ligne de<br />

SWIG).<br />

Module exemple.c<br />

#include <br />

double My_variable = 3.0;<br />

465

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!