我有一個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
它做它的事了一段時間,現在當我嘗試重新編譯,我得到了同樣的錯誤。 這是我第一次嘗試從C++調用Perl程序,因此任何提示都會有所幫助。
Perl和C++之間是否需要一對夫妻?如果沒有,你可以做一個系統(「perl的myscript.pl」) –
這就是我從命令行運行Perl程序...你的意思是我也一樣從我的C++程序 – itcplpl
@itcplpl內:是的,但使用''的'system()'函數。 –
jwodder