我正在尝试在Perl中导入C ++ DLL(Active Perl 5.12.2 Build 1202)。 我的子程序是:
sub _import
{
my ($func,$params)=@_;
print "DLL Pass value: $func $params \n";
my $retVal= new Win32::API($MY_DLL,$func,$params,'I');
croak("Failed to import $func from $MY_DLL \n") if(!$retVal);
return $retVal;
}
我已添加use Win32::API;
,我已定义use constant MY_DLL => 'D:\MyData\MYDLL_CON'; # name of the dll
当我调用_import("Init",'P');
(" Init"接受指针的函数)时,我得到了什么,命令行打印:
DLL Pass value: Init P
Failed to import Init from
请注意,有一个<空间>之后"来自"。 DLL存在于路径上,但仍然是WIN32:API函数将其视为空白!相同的perl脚本适用于某台机器,并且在某台机器上无法工作(给出上述错误)。所有机器都具有相同的配置以及相同版本的Perl和所有内容。但是它在很少的机器上找到DLL并且没有休息!
Dependency Walker没有显示DLL的任何依赖性错误。
我无能为力!
答案 0 :(得分:0)
$MY_DLL
与MY_DLL
不同。摆脱$
。