https://kobarin.sakura.ne.jp/test/kbmed314_beta5.exehttps://kobarin.sakura.ne.jp/test/kbmed314_beta5.7z.exe と .7z はどちらも中身は同じです。
.7z の展開の仕方が分からない方は .exe をダウンロードして下さい。
.exe だと Microsoft Edge でブロックされる方は .7z をダウンロードして下さい。
Microsoft Edge にブロックされる方は安全だと報告してくれると助かります。
起動時にエラーメッセージが表示されてプラグインが認識されない場合は
Microsoft Visual C++ 2022 再頒布可能パッケージが必要です。
https://visualstudio.microsoft.com/ja/downloads/#other-ja-familyx64 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x64.exex86 版ランタイムファイル直リンク
https://aka.ms/vs/17/release/VC_redist.x86.exe(x64 版の動作には vc_redist.x64.exe と vc_redist.x86.exe の両方が必要です)
VS2019 のランタイムでも動作はするようですが、念のため VS2022 のランタイムを
入れて下さい。
β版は Windows XP のサポートを打ち切りました。XP 環境だと一部のプラグインが
動作しません。Windows XP で使いたい方は正式版をお使い下さい。
v3.14beta5 での変更点
・各種プラグイン/DLL の開発環境を VS2022 17.10.1 に更新
・kbmdx.kpi に関する以下の修正
・64bit 版が落ちるのを修正
・v3.14beta3 同梱の版(VS2022 17.10.0 でビルド)から発生
(std::mutex::lock() で落ちる。kbmod.kpi が落ちるのと同じ原因?)
・プリプロセッサの定義に _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR を追加で回避
・kbpsf2.kpi に関する以下の修正
・プリプロセッサの定義に _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR を追加
・VS2022 17.10.0 以降でビルドすると 64bit 版が std::mutex::lock() で落ちるこ
との対策
・本プラグインで実際に落ちるのを確認出来た訳ではないが std::mutex を使用して
いる箇所があるようなので念の為
ちょっと納得行かないのですが kbmdx.kpi の 64bit 版が落ちるのを修正しました。
kbpsf2.kpi の方は念の為の修正です。
一週間ほど様子を見てから正式版にするつもりでしたが落ちる不具合はあまり
使われない形式でも早めに修正しておこうと思いました。
VS2022 17.10.0 以降の最新のプラットフォームツールセットでリリースビルドしたものは
64bit 版では
std::mutex::lock()
を呼ぶと落ちるみたいで改めて確認してみたら kbmod.kpi の64bit版が落ちるのもこれが
原因でした。
試してみると EXE 内で使う分には大丈夫だけど DLL 内だと NG っぽいですね。
https://github.com/microsoft/STL/wiki/ChangelogVS 2022 17.10
...
Fixed bugs:
Fixed mutex's constructor to be constexpr. #3824 #4000 #4339
Note: Programs that aren't following the documented restrictions on binary compatibility may encounter null dereferences in mutex machinery. You must follow this rule:
When you mix binaries built by different supported versions of the toolset, the Redistributable version must be at least as new as the latest toolset used by any app component.
You can define _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR as an escape hatch.
escape hatch(緊急の際の避難手段?) として定義?
怖くて全てのプロジェクトで定義しておきたくなるんですけど。
EXE で OK で DLL で NG なのは修正し切れてないということ?
むしろ 17.10.0 から発生するようになったような?