perl:integration_avec_les_autres_langages_xs
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
perl:integration_avec_les_autres_langages_xs [2009/03/15 01:14] – root | perl:integration_avec_les_autres_langages_xs [2013/03/13 11:14] (Version actuelle) – [h2xs] root | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== Intégration avec divers langages ====== | ||
+ | |||
+ | |||
Références : | Références : | ||
* //man perlxstut// | * //man perlxstut// | ||
Ligne 26: | Ligne 29: | ||
**XS** désigne une suite d' | **XS** désigne une suite d' | ||
* vous possédez une interface C, normalement sous la forme d'un ou plusieurs fichiers //.h// contenant des prototypes de fonctions, ex : | * vous possédez une interface C, normalement sous la forme d'un ou plusieurs fichiers //.h// contenant des prototypes de fonctions, ex : | ||
+ | <code c> | ||
void hello(); | void hello(); | ||
int somme(int a, int b); | int somme(int a, int b); | ||
float moyenne(int nb, int* valeurs); | float moyenne(int nb, int* valeurs); | ||
+ | </ | ||
* vous désirez produire une interface Perl équivalente. Perl n' | * vous désirez produire une interface Perl équivalente. Perl n' | ||
+ | <code perl> | ||
sub hello { ... }; | sub hello { ... }; | ||
sub somme { my($a, $b) = @_; ...; return $val; } | sub somme { my($a, $b) = @_; ...; return $val; } | ||
sub moyenne { my(@valeurs) = @_; ...; return $val; } | sub moyenne { my(@valeurs) = @_; ...; return $val; } | ||
+ | </ | ||
* vous voulez vous assurer que le passage de Perl à C (pour l' | * vous voulez vous assurer que le passage de Perl à C (pour l' | ||
* enfin vous voulez produire un module Perl qui se charge d' | * enfin vous voulez produire un module Perl qui se charge d' | ||
- | |||
===== h2xs ===== | ===== h2xs ===== | ||
L' | L' | ||
+ | <code c> | ||
#include " | #include " | ||
#include " | #include " | ||
Ligne 54: | Ligne 59: | ||
CODE: | CODE: | ||
printf(" | printf(" | ||
+ | </ | ||
De fait, il peut être compilé via la procédure standard de distribution des modules Perl : | De fait, il peut être compilé via la procédure standard de distribution des modules Perl : | ||
Ligne 62: | Ligne 68: | ||
* un module Perl qui déclare les symboles (fonctions, variables, etc) fournis par le module natif | * un module Perl qui déclare les symboles (fonctions, variables, etc) fournis par le module natif | ||
* un module **natif** qui est une DLL qui sera chargée dynamiquement et étendra l' | * un module **natif** qui est une DLL qui sera chargée dynamiquement et étendra l' | ||
- | |||
====== 3. In bed with Perl ====== | ====== 3. In bed with Perl ====== | ||
perl/integration_avec_les_autres_langages_xs.1237079680.txt.gz · Dernière modification : 2009/03/15 01:14 de root