Forum Programmation.perl perlxs : remonter une chaine

Posté par .
Tags : aucun
0
16
jan.
2007
bonjour,



je voudrais empaqueter une librairie c++ existante dans un module.



l'une des fonctions prend en argument un tableau de char prealablement alloué .



en deux mots:


char tab[128];


int res = ma_classe:: ma_fonction (tab) ;



apres l'appel tab contient une chaine.



en perl cela devrait donner :

 

my $extC = ma_classe->new( );
my $tab;
$extC ->ma_fonction (\$tab) ;

et dans ma_classe.xs :

MODULE = ma_classe PACKAGE = ma_classe
int
ma_classe::ma_fonction (p_msg)
SV * p_msg
PREINIT:
char msg [256];
CODE:
msg [0]='\0';
RETVAL = THIS ->ma_fonction ( msg);
printf("msg =%s\n", msg);
p_msg= newSVpv(msg , strlen(msg));
OUTPUT:
RETVAL
p_msg


Le probleme est que $tab est toujours vide quoi que je fasse.


pourtant dans le module msg est bien repli par ma_fonction comme me le prouve le printf.


Où me suis-je trompé ?


Merci d'avance

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.