воскресенье, 20 апреля 2014 г.

Вызов скриптов Perl из программы на C++

Оказалось, что организовать вызов Perl-скриптов из C/C++ (MS Visual C++ 2010) достаточно просто:
  1. Прописываем в Include Directories и Library Directories проекта путь к Perl\CORE:


  2. Добавляем perl512.lib в Linker->Input->Additional Dependencies.


  3. Ниже приведен пример кода, вызывающего perl из консольного приложения C++. Обращу внимание на два момента: a) #pragma warning (disable:4005) для подавления сообщения компилятора "'ENOTSOCK' : macro redefinition"; b) если опустить вызов PERL_SYS_INIT(0, NULL), то на шаге perl_parse получим Access Violation.

    1. #include "stdafx.h"
    2. //avoid warning C4005: 'ENOTSOCK' : macro redefinition
    3. #ifdef _MSC_VER
    4. #pragma warning ( disable : 4005 )
    5. #endif
    6. #include <perl.h>
    7.  
    8. PerlInterpreter *my_perl;
    9.  
    10. int _tmain(int argc, _TCHAR* argv[])
    11. {
    12.     PERL_SYS_INIT(0, NULL);
    13.  
    14.     my_perl = perl_alloc();
    15.     perl_construct(my_perl);
    16.  
    17.     perl_parse(my_perl, NULL, argc, argv, NULL);
    18.     perl_run(my_perl);
    19.  
    20.     perl_destruct(my_perl);
    21.     perl_free(my_perl);
    22.  
    23.     return 0;
    24. }

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

Комментариев нет:

Отправить комментарий