我有一个使用 _cdecl 调用约定构建的 win32 dll,它将一个函数导出为:
extern __declspec(dllexport) char* myfunc(char* param1, char* param2, char* param3, int param4, int param5)
我从 perl 脚本中调用这个函数,如下所示:
sub call_dll {
.....
....
my $api = Win32::API->new( 'my.dll', 'myfunc', 'PPPII', 'P', '_cdecl' );
my $return = $api->Call( $param1, $param2, $param3, $param4, $param5);
....
}
这个调用工作正常,我成功地获得了返回值。
现在,当我试图在 perl 多线程实现中调用这个“call_dll”函数时,脚本每次都会崩溃。
我在 Windows7 上使用活动 perl 5.16
这次崩溃的原因是什么?我们不能将 win32::api 用于线程实现吗?