Я не могу получить arrayrefs, переданные в C-функцию, используя Inline C. Мне нужна помощь, пожалуйста.
Во-первых, просто чтобы доказать, что я могу заставить Inline C работать, я передам скалярное значение функции C:
#!/usr/bin/perl -I.
#
# try1.pl
#
use Inline C;
my $c = 3.8;
foo( $c );
__END__
__C__
void foo( double c )
{
printf( "C = %f\n", c );
}
И запустите его:
% ./try1.pl
C = 3.800000
Теперь сделайте то же самое, но с arrayref:
#!/usr/bin/perl -I.
#
# try2.pl
#
use Inline C;
my @abc = (1.9, 2.3, 3.8);
foo( \@abc );
__END__
__C__
void foo( double *abc )
{
printf( "C = %f\n", abc[2] );
}
Запустите его:
% ./try2.pl
Undefined subroutine &main::foo called at ./try1.pl line 7.
Любые идеи, что я делаю неправильно? Помогите с благодарностью!