如何将Perl解释器嵌入C#程序中

16

我意识到我需要使用 DllImport 导入 perlembed 方法。

perl_parse
perl_alloc
perl_free

但是不确定如何为它的函数参数编组,以便使用DLLImport,特别是使用perl_parse方法。

我还意识到已经存在一个相关问题,几乎达到了目标,但仍然需要创建一个C包装器,然后在C#中使用它来解决。

他说他无法导入PERL_SYS_INIT3。

因此,我的问题是如何正确地使用只有C#来封装它们并使用它们?


2
你能告诉我你尝试过什么吗? - Xharze
特定的发行版?ActiveState,Strawberry? - ZagNut
我尝试过的是Active State,我主要参考了perlembed文档。 - Vivek Bernard
这里的讨论可能会很有用:http://www.perlmonks.org/?node_id=530344 - paul
看这里,也许这会有所帮助:http://stackoverflow.com/questions/2056275/embedding-perl-interpreter - Likurg
1个回答

2

看看这个;我希望它能够有所帮助(在早期版本中称为)

我从这里得到了这个 (perl)

要在C#程序中嵌入Perl解释器,请添加对COM对象“Microsoft Script Control 1.0”的引用,并编写如下代码:

MSScriptControl.ScriptControlClass Interpreter;
Interpreter = new MSScriptControl.ScriptControlClass();
Interpreter.Language = @"PerlScript";
string Program = @"reverse 'abcde'";
string Results = (string)Interpreter.Eval(Program);

以上代码等同于以下嵌套Perl解释器的Perl脚本:
use Win32::OLE;
my $Interpreter;
$Interpreter = Win32::OLE->new('ScriptControl');
$Interpreter->{Language} = 'PerlScript';
my $Program = "reverse 'abcde'";
my $Results = $Interpreter->Eval($Program);

1
只有在安装了带有PerlScript功能的Active State Perl时,才能正常运行。如果您使用的是不同的Perl(例如从源代码编译的Perl),则系统中没有安装PerlScript。 - Francisco Zarabozo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接