|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Vladimir Ivanov 2:5020/400 24 Mar 2003 21:21:02 To : All Subject : Вызов C callback из embedded perl --------------------------------------------------------------------------------
Hello, All!
Использую Perl API для вcтраивания perl-скрипта в мою программу на С.
С вызовом процедур из скрипта, модификацией глобальных переменных -
разобрался - проблем нет.
Вопрос назрел:
Hа C реализована некая callback-функция. Как её можно вызвать из perl ?
Т.е. сделать что-то вроде-этого:
------- perl'овый код: test.pl ------
sub perl_sub
{
# ? my $callback = shift;
print "hello from perl\n";
# ? &$callback ; # вызов сallback
}
------ Сишный код: test.c --------
#include <EXTERN.h>
#include <perl.h>
static PerlInterpreter *my_perl;
void c_callback()
{
printf ("hello from c\n");
}
int main(int argc, char **argv, char **env)
{
char *myargv[]={ "","test.pl",NULL};
my_perl = perl_alloc();
perl_construct(my_perl);
perl_parse(my_perl, NULL, 2, myargv, NULL);
call_argv("perl_sub", G_DISCARD, NULL);
// здесь необходимо передать в качестве параметра
// нечто вроде ссылки на c_callback
perl_destruct(my_perl);
perl_free(my_perl);
}
-------------------------------
Hеобходимо на выходе получить:
---------
hello from perl
hello from c
---------
Help plz.
В принципе, передача "ссылки на код" через параметр не обязательна -
сгодятся
варианты вызова заранее предопределённых C-шных функций.
Вариант написать модуль - не подходит.
With best regards,
Vladimir Ivanov.
--- ifmail v.2.15dev5
* Origin: -censored- (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/11054c9abc168.html, оценка из 5, голосов 10
|