gpt4 book ai didi

c++ - 从 C++ 程序运行 perl 程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:48:11 27 4
gpt4 key购买 nike

我有一个 C++ 程序来计算库存,当它低于某个水平时,我想调用我的 perl 程序,它将订单详细信息写入数据库。我阅读了有关从 C++ 调用 Perl 的文档,并尝试使用此示例代码

#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 程序,所以任何提示都会有所帮助。

最佳答案

您看到的错误是因为 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`

反引号将运行反引号内的内容,然后将命令的输出放在命令行上。

关于c++ - 从 C++ 程序运行 perl 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7622709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com