DLLの利用についてNo.09471
さん 21/09/09 13:06
 
 お世話になります。

 秀丸ファイラーClassicのスクリプトでDLLを利用しようとしています。
 1つわからないのですが、DLLの解放タイミングはどのようになるのでしょうか。
 秀丸エディタの場合、freedllで解放できるかと思うのですが、秀丸ファイラーCla
ssicではどのようになっているのでしょうか。
 ちなみに、スクリプトの終了後にDLLファイルをリネームしようとしたところ、秀
丸ファイラーClassicが使用中の胸のメッセージが表示されてリネームできないよう
なので、解放されていない気がしています。
 以上、よろしければ教えていただけますと幸いです。
 環境は、Windows10 21H1 64ビット、秀丸ファイラーClassic 1.64正式版です。

 以上、よろしくお願いいたします。

[ ]
RE:09471 DLLの利用についてNo.09472
秀丸担当 さん 21/09/09 17:19
 

秀丸ファイラーClassicの場合、LoadDllメソッドでDLLを読み込んだと、スクリプト
が終わると自動的にオブジェクトが解放されるタイミングで後処理が行われますが、
DLLそのものは解放されませんでした。

正確には以下のようにオブジェクトが1つの場合は解放されます。
obj=LoadDll("c:\\folder\\mydll.dll");
以下のように、二重でオブジェクトの参照があるような場合に解放されないです。
obj=LoadDll("c:\\folder\\mydll.dll");
obj1=obj.DllFunc;
ですが、通常は参照が二重になる使い方なので、解放されないのが普通でした。
こういう場合でも解放されるように今後のバージョンで修正させていただきます。

後処理としての関数の、SetDllDetachFuncの指定は、二重の参照であっても最後に一
回だけ呼ばれます。

[ ]
RE:09472 DLLの利用についてNo.09474
さん 21/09/10 09:14
 
 お世話になります。

 なるほど、了解しました。
 修正していただけるとのことで、ありがとうございます。
 よろしくお願いいたします。

 それでは。

[ ]
RE:09474 DLLの利用についてNo.09493
さん 21/09/16 08:59
 
 お世話になります。

 この件、少し確認しただけですが、1.66β2で修正されていることを確認しました。
 ありがとうございました。

 以上、今後ともよろしくお願いいたします。

[ ]