/ / uruchomiony program perl z programu C ++ - c ++, perl

uruchomienie programu perlowego z programu C ++ - c ++, perl

Mam program C ++ do obliczania zasobów igdy spadnie poniżej pewnego poziomu, chcę wywołać mój program perl, który zapisze szczegóły zamówienia w bazie danych. Przeczytałem dokumentację dotyczącą wywoływania Perla z C ++ i próbowałem tego przykładowego kodu

#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();
}

Próbowałem skompilować, ale pojawia się następujący błąd

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.

Pracuję nad ubuntu, więc poszedłem do cpan i uciekłem

force install ExtUtils::Embed

Trwało to przez jakiś czas i teraz, kiedy próbuję ponownie skompilować, pojawia się ten sam błąd. Po raz pierwszy próbuję wywołać program Perl z C ++, więc wszelkie wskazówki byłyby pomocne.

Odpowiedzi:

5 dla odpowiedzi № 1

Błąd, który widzisz, ponieważ EXTERN.h nie znajduje się w ścieżce dołączania.
Wygląda na to, że nie znajduje się on w wierszu poleceń g ++, ponieważ skrypt perl się nie powiódł

Możesz biec

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

samodzielnie? To jest skrypt, który daje ci wymagane opcje g ++. Czy używasz backticks () do cytatów wokół perla w linii poleceń? To spowoduje uruchomienie polecenia perl.

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

Backticks będzie działał, co znajduje się w backtickach, a następnie umieszcza dane wyjściowe polecenia w linii poleceń.