/ / запуск програми perl з програми C ++ - c ++, perl

Запуск програми perl з програми C ++ - c ++, perl

У мене є програма C ++ для обчислення запасів іколи він опускається нижче певного рівня, я хочу викликати мою програму perl, яка запише деталі замовлення в БД. Я прочитав документацію про виклик Perl з C ++, і я спробував цей зразок коду

#include <EXTERN.h>
#include <perl.h>
static PerlInterpreter *my_perl;
int main(int argc, char **argv, char **env)
{
char *args[] = { NULL };
PERL_SYS_INIT3(&argc,&argv,&env);
my_perl = perl_alloc();
perl_construct(my_perl);
perl_parse(my_perl, NULL, argc, argv, NULL);
PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
/*** skipping perl_run() ***/
call_argv("showtime", G_DISCARD | G_NOARGS, args);
perl_destruct(my_perl);
perl_free(my_perl);
PERL_SYS_TERM();
}

Я спробував скомпілювати, але я отримую наступну помилку

g++ fn-test.cpp -o t "perl -MExtUtils::Embed -e ccopts -e ldopts"
g++: perl -MExtUtils::Embed -e ccopts -e ldopts: No such file or directory
fn-test.cpp:2:24: fatal error: EXTERN.h: No such file or directory
compilation terminated.

Я працюю на ubuntu, тому я пішов у cpan і побіг

force install ExtUtils::Embed

він зробив це "s річ на деякий час і тепер, коли я намагаюся скомпілювати знову, я отримую ту ж помилку. Це перший раз, коли я намагаюся викликати програму Perl з C ++, тому будь-які поради будуть корисні.

Відповіді:

5 за відповідь № 1

Помилка, яку ви бачите, тому, що EXTERN.h не входить до шляху включення.
Схоже, що це не на вашому командному рядку g ++, тому що сценарій perl не працює

Ви можете бігти

perl -MExtUtils::Embed -e ccopts -e ldopts

само собою? Це скрипт, який надає необхідні опції g ++. Ви використовуєте backticks () для котирування навколо perl у командному рядку? Це призведе до запуску команди perl.

g++ fn-test.cpp -o t `perl -MExtUtils::Embed -e ccopts -e ldopts`

Backticks виконуватиме те, що знаходиться в списку, а потім виводити команду в командний рядок.