2012-04-16 16 views
16

Tôi nhận ra rằng tôi phải DllImport các phương pháp perlembedLàm thế nào để Nhúng dịch perl trong C# Chương trình

perl_parse 
perl_alloc 
perl_free 

vv

Nhưng không chắc chắn làm thế nào để marhsall các đối số chức năng để sử dụng nó với DLLImport đặc biệt là với phương pháp perl_parse.

Tôi cũng nhận ra rằng related question đã tồn tại gần như ở đó nhưng OP vẫn giải quyết bằng cách tạo trình bao bọc C và sau đó sử dụng nó trong C#.

Anh ấy nói rằng anh ấy không thể DLLimport PERL_SYS_INIT3.

Vì vậy, câu hỏi của tôi là làm thế nào để bọc chúng đúng cách chỉ sử dụng C# và sử dụng nó?

+2

Bạn có thể nói những gì bạn đã thử không? – Xharze

+0

Phân phối cụ thể? ActiveState, Strawberry? – ZagNut

+0

Một trong những tôi đã thử với là với Nhà nước hoạt động và tôi chủ yếu tham khảo ý kiến ​​các perlembed doc –

Trả lời

2

Nhìn vào điều này; Tôi hy vọng nó sẽ giúp (nó được gọi là trong phiên bản sớm)

Tôi nhận này từ đây (perl)

Để nhúng một thông dịch Perl trong một chương trình C#, thêm một tham chiếu đến đối tượng COM "Microsoft Script kiểm soát 1.0" và viết mã như thế này:

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

trên đây là tương đương với kịch bản Perl sau, nhúng một thông dịch Perl trong một thông dịch Perl:

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

Điều đó sẽ chỉ hoạt động nếu bạn có Active Perl được cài đặt với tính năng PerlScript. Nếu bạn có Perl khác (ví dụ: bạn đã biên dịch Perl từ nguồn), bạn không có PerlScript được cài đặt trong hệ thống. –

Các vấn đề liên quan