Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#程序中嵌入perl解释器_C#_Perl_Interop_Dllimport - Fatal编程技术网

如何在C#程序中嵌入perl解释器

如何在C#程序中嵌入perl解释器,c#,perl,interop,dllimport,C#,Perl,Interop,Dllimport,我意识到我必须DllImportperlembed方法 perl_parse perl_alloc perl_free 等等, 但不确定如何将所有函数参数都标记为与DLLImport一起使用,尤其是与perl\u parse方法一起使用 我还意识到a已经存在,它几乎已经存在了,但是OP仍然通过创建一个C包装器并在C#中使用它来解决 他说他无法将PERL_SYS_INIT3移植到DLLimport 因此,我的问题是如何仅使用C#正确地包装它们并使用它?看看这个;我希望它会有帮助(早期版本中称为)

我意识到我必须
DllImport
perlembed方法

perl_parse
perl_alloc
perl_free
等等,

但不确定如何将所有函数参数都标记为与
DLLImport
一起使用,尤其是与
perl\u parse
方法一起使用

我还意识到a已经存在,它几乎已经存在了,但是OP仍然通过创建一个C包装器并在C#中使用它来解决

他说他无法将PERL_SYS_INIT3移植到DLLimport


因此,我的问题是如何仅使用C#正确地包装它们并使用它?

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

我从这里得到这个()

要在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);

你能告诉我你试过什么吗?具体分布情况?ActiveState,草莓?我尝试使用的是Active State,我主要参考了perlembed文档,这里的讨论可能很有用:看这里,这可能会有帮助,只有在您安装了带有PerlScript功能的Active State Perl时才会起作用。如果您有不同的Perl(例如,您从源代码编译Perl),则系统中没有安装PerlScript。