-1

私は、1つの関数を次のようにエクスポートする_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 を使用できませんか?

4

1 に答える 1