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

时间:2012-04-16 14:29:06

标签: c# perl interop dllimport

我意识到我必须DllImport perlembed方法

perl_parse
perl_alloc
perl_free

等,

但不确定如何将函数参数与DLLImport特别是perl_parse方法一起使用。

我也意识到已经存在related question几乎存在,但OP仍然通过创建C包装器然后在C#中使用它来解决。

他说他无法DLLimport PERL_SYS_INIT3。

所以我的问题是如何只使用C#正确包装它们并使用它?

1 个答案:

答案 0 :(得分: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解释器中嵌入Perl解释器:

use Win32::OLE;
my $Interpreter;
$Interpreter = Win32::OLE->new('ScriptControl');
$Interpreter->{Language} = 'PerlScript';
my $Program = "reverse 'abcde'";
my $Results = $Interpreter->Eval($Program);