2012-04-16 79 views
16

我意識到,我必須DllImport的perlembed方法如何嵌入Perl解釋器在C#程序

perl_parse 
perl_alloc 
perl_free 

等,

但不知道如何marhsall函數的參數爲​​使用它與DLLImport特別是perl_parse方法。

我也意識到一個related question已經存在,幾乎在那裏,但仍然通過創建一個C包裝,然後在C#中使用它解決OP。

他說,他無法dllimport的PERL_SYS_INIT3。

所以我的問題是如何只使用C#妥善包裝它們,並用它?

+2

你能告訴你所嘗試過的嗎? – Xharze 2012-04-21 22:15:33

+0

特別分佈? ActiveState,草莓? – ZagNut 2012-04-24 03:31:59

+0

我嘗試的一個是與Active狀態,我主要是諮詢這裏的perlembed DOC – 2012-04-24 04:45:56

回答

2

看這個;我希望這將有助於(它被稱爲早期版本)

我得到這個從這裏(perl

要嵌入在一個C#程序的Perl解釋器,添加一個引用到COM對象「Microsoft腳本控制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); 
+1

,如果您有與PerlScript功能安裝了Active狀態Perl只會工作。如果您有不同的Perl(例如,您從源代碼編譯Perl),則系統中未安裝PerlScript。 – 2013-08-30 23:19:20