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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.