我正在使用PERL 5.8.8并且我没有找到在perl中以pkcs#8格式读取PrivateKEY的方法,所以我试图在C#中创建一个可以做到的dll,所以我可以从那里调用方法。
我看到执行此操作的模块是:
Win32 :: API
他们展示的例子是:
use Win32::API;
$function = Win32::API->new(
'mydll, 'int sum_integers(int a, int b)',
);
$return = $function->Call(3, 2);
问题是在示例中我可以直接访问函数sum_integers 但如何从PERL调用我的函数sum()?#
namespace testCreateDLLToUseInPERL
{
public class Test
{
public Test(){
}
public int sum(int n1, int n2)
{
return n1 + n2;
}
}
}
我试过了:
Win32::API::Struct->typedef( Test => qw{ });
Win32::API->Import('testCreateDLLToUseInPERL', 'Test::sum(int a, int b)');
my $myObj = Win32::API::Struct->new('Test');
print Dumper($myObj );
上述代码失败,并显示消息:
系统找不到输入的环境选项
$function = Win32::API->new(
'testCreateDLLToUseInPERL', 'int sum(int a, int b)',
);
print Dumper($function);
print Win32::FormatMessage( Win32::GetLastError() );
$return = $function->Call(3, 2);
print $return;
上述代码失败,并显示消息:
找不到指定的程序
所以,我知道DLL已正确加载但我没有提供正确的路径来达到该功能。
有什么想法吗?
答案 0 :(得分:1)
Win::API
适用于调用本机Win32方法,但要调用.NET对象,则需要通过Win32::OLE
。您还需要通过regasm
向COM注册.NET对象。可能需要的所有内容的完整细节is up on perlmonks(虽然这是2004年的日期,所以事情可能已经发生了变化),但这将是一个起点。