原因としては 以下の内容が考えられます。
64bit版秀丸エディタを使用しているのに、32bit版のDLLをロードしようとしている。
基本的に、64bit版秀丸エディタで使用できるのは、64bit版DLLだけです。 オプションの設定で、32bit版DLLを使用する事も出来ますが、正常に動作する保証はありません。
loaddll文/loaddll関数の有効範囲の問題
秀丸エディタではVer.3.02以降、外部DLLを使用できるようになりましたが、 以下の制限が存在します。
dllfunc等の関数呼び出しは、loaddll文/loaddll関数 を実行した秀丸エディタのみ可能。 dllをロードした秀丸エディタ以外では、dllfunc等の関数呼び出しは失敗する。
マクロヘルプのDLL呼び出し機能 を参照の事。
その為、ウィンドウの切り替えに失敗していたり、意図しないウィンドウの切り替えが発生してしまい、 DLLをロードしたウィンドウ以外でdllfunc等を呼び出すと、 「DLLがロードされてないのにdllfunc関数が使われました」 と表示されてしまいます。
動作確認用マクロ(意図的にウィンドウを切り替えて、エラーを発生させている。)
//新しいファイルを2個開く
newfile;
#window1 = hidemaruhandle(0);
newfile;
#window2 = hidemaruhandle(0);
//1番目の秀丸エディタ上で、hmjre.dllをロードする
setactivehidemaru #window1;
loaddll "hmjre.dll";
if(!result){
message "hmjre.dllのロードに失敗しました。";
endmacro;
}
//関数の実行(問題なし)
$version1 = hex(dllfunc("JreGetVersion") & 0xFFFF);
message $version1;
//2番目の秀丸エディタに移動
setactivehidemaru #window2;
//関数の実行(ここでエラーになるはず。)
// --> DLLがロードされてないのにdllfunc関数が使われました
$version2 = hex(dllfunc("JreGetVersion") & 0xFFFF);
message $version2;
freedll;
endmacro;