The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Вcтраивание perl-скрипта в программу на С (perl gcc lib)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: perl, gcc, lib,  (найти похожие документы)
Date: Mon, 24 Mar 2003 21:42:37 +0500 From: Andrey Sapozhnikov <sapa@icb.chel.su> Newsgroups: ftn.ru.perl Subject: Вcтраивание perl-скрипта в программу на С > Использую Perl API для вcтраивания perl-скрипта в мою программу на С. > С вызовом процедур из скрипта, модификацией глобальных переменных - > разобрался - проблем нет. > > Вопрос назрел: > Hа C реализована некая callback-функция. Как её можно вызвать из perl ? Упрощеный вариант: #include <EXTERN.h> #include <perl.h> #include <perlio.h> #include <XSUB.h> static PerlInterpreter *my_perl; STATIC void c_callback(pTHX_ CV *cv) { dXSARGS; if (items != 0) croak("Usage: callback();"); printf("hello from c\n"); XSRETURN_YES; } EXTERN_C void boot_DynaLoader (pTHX_ CV* cv); EXTERN_C void xs_init(pTHX) { char *file = __FILE__; newXS("DynaLoader::boot_DynaLoader", boot_DynaLoader, file); newXSproto("main::callback", c_callback, file, ""); } 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, xs_init, 2, myargv, NULL); call_argv("perl_sub", G_DISCARD, NULL); perl_destruct(my_perl); perl_free(my_perl); } передавать ссылку никуда не нужно, функция callback() будет видна в пространстве имен main и в своей функции perl_sub Вы можете ее просто вызвать по имени. Однако, если Вам понадобится в будущем чуть больше функциональности, рекомендую сразу писать расширение как XS (perldoc perlxs, perldoc perlxstut). P.S. Я в этом примере заодно инициализировал DynaLoader. Почти наверняка Вам это пригодится.

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

Ваш комментарий
Имя:         
E-Mail:      
Заголовок:
Текст:





  Закладки на сайте
  Проследить за страницей
Created 1996-2017 by Maxim Chirkov  
ДобавитьРекламаВебмастеруГИД  
Hosting by Ihor