Пытается использовать структуру данных perl (частично как способ поддержки ассоциативного массива на C), но следующая программа продолжает сбой. Он компилируется отлично, но будет сбой на линии с помощью newSVpv(). Не знаю, почему.Программа C продолжает сбой при вызове функции perl newSVpv()
#include <EXTERN.h> /* from the Perl distribution */
#include <perl.h> /* from the Perl distribution */
static PerlInterpreter *my_perl; /*** The Perl interpreter ***/
int main(int argc, char **argv, char **env) {
char *proto = "http";
SV* ret = newSVpv("http", 4);
sv_catpvn(ret, "://", 3);
STRLEN len = 1;
char *result = SvPV(ret, len);
printf("result: %p %d\n", result, len);
return 0;
}
Линия скомпилировать это
gcc -g -o interp te1.c `perl -MExtUtils::Embed -e ccopts -e ldopts`
The Perl у меня есть 5.14.2 работает на Ubuntu 12.04.4 LTS.
Спасибо за любые советы!
UPDATE: добавлен след gdb. Спасибо за вопрос. GDB след:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7b235a6 in Perl_newSVpv() from /usr/lib/libperl.so.5.14
(gdb) bt
#0 0x00007ffff7b235a6 in Perl_newSVpv() from /usr/lib/libperl.so.5.14
#1 0x0000000000400927 in main (argc=1, argv=0x7fffffffe1e8,
env=0x7fffffffe1f8) at te1.c:7
(gdb)
Как он падает? Сообщения об ошибках, и, если возможно, поможет backdrace gdb. – hobbs