2012-04-16 11 views
16

Zdaję sobie sprawę, że muszę DllImport metody perlembedJak osadzić Perl tłumacza w C# Programu

perl_parse 
perl_alloc 
perl_free 

itp

Ale nie wiem, jak marhsall argumenty funkcji za korzystanie z jej DLLImport, w szczególności z metodą perl_parse.

Rozumiem również, że istnieje już related question, który jest prawie na miejscu, ale mimo to OP został rozwiązany przez utworzenie wrappera C, a następnie użycie go w C#.

Mówi, że nie był w stanie zaimportować pliku PERL_SYS_INIT3.

Moje pytanie brzmi: jak prawidłowo owinąć je przy użyciu tylko języka C# i używać go?

+2

Czy możesz powiedzieć, co próbujesz? – Xharze

+0

Poszczególna dystrybucja? ActiveState, Strawberry? – ZagNut

+0

Ten, z którym próbowałem, był z Active State i przede wszystkim konsultowałem się z dociekaną dokumentacją. –

Odpowiedz

2

Spójrz na to; Mam nadzieję, że to pomoże (został wezwany wczesnej wersji)

mam to stąd (perl)

Aby osadzić interpretera Perl w programie C#, dodać odwołanie do obiektu COM „Microsoft Script Kontroli 1.0" i napisać kod tak:

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

powyższe jest równoznaczne z następującym skryptem Perl, który osadza interpreter Perla w Perl tłumacza:

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

To zadziała tylko wtedy, gdy masz aktywny Perl stanu zainstalowany z funkcją PerlScript. Jeśli masz inny Perl (np. Skompilowany Perl ze źródła), nie masz zainstalowanego PerlScript w systemie. –