Re: DXライブラリ終了途中?のアクセス違反 ( No.10 ) |
- 名前:管理人 日時:2022/09/05 23:46
お試し頂きありがとうございます
> Windows によって PC が保護されました
> Microsoft Defender SmartScreen は認識されないアプリの起動を停止しました。このアプリを実行すると、PC が危険にさらされる可能性があります。
ありがとうございます
そちらの表示はこちらのスレッドでも話題になったのですが、
<危険なファイルに認定される>
https://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5352
Android や iPhone がストアを通さない野良アプリを基本的に実行できない( or 実行しにくく )しているのに
Windows も倣い始めたのか Windows 7 くらいから個人が作成した出処不明の実行ファイルを
実行しようとすると『危険なファイル』扱いされるようになりました
設定で『危険なファイル』表示をしないようにすることもできますが、今後は個人作品は Steam での
配信など、実行しようとしても『危険なファイル』扱いされずに済むプラットフォームで発表しないと
いけないかもしれません( まあ昨今は『自作ホームページで自作ゲームソフトを配布』というのはほぼ無くなっていますが )
> 「フレームがモジュールにありません
> 読み込まれたモジュールに現在のスタック フレームが見つかりませんでした。この場所のソースは表示できません。」
>
> と出てしまい、それ以上の情報は上記の「例外がスローされました」ウィンドウしかない状態です
> visual studioの使い方が悪いのかもしれません。どうやったら表示されるようになるでしょうか?
すみません、止まった際に Visual Studio のメニューから
『デバッグ(D)』→『ウィンドウ(W)』→『スレッド(H)』
を選択してスレッド情報を表示して、『カテゴリ』が『メインスレッド』となっているスレッドをダブルクリックすると
表示対象のスレッドがメインスレッドに切り替わり、恐らくDXライブラリのどれかのファイルのどこかの行が
指し示されると思います
あと、よろしければ『メインスレッド』に切り替える前に示されていたスレッドの『名前』と『場所』も
教えていただけると助かります m(_ _)m
> visualstadioを使わずに、ただ私の作った「A.exe」「B.exe」「C.exe」「D.exe」の4つを同時起動した場合にも
> 動きが遅くなったりしませんでしたでしょうか?
はい、4つ同時に起動しても4つとも安定して(16)が表示され続けます
環境は以下の通りです
OS : Windows10 Pro
CPU : Core i7-9700K
GPU : GeForce RTX 2080
MEM : 32GB
 |
Re: DXライブラリ終了途中?のアクセス違反 ( No.11 ) |
- 名前:たろう 日時:2022/09/06 01:02
いつもありがとうございます
「『メインスレッド』に切り替える前に示されていたスレッド」
がよくわからず、伝えるべき内容が間違うといけないので、
エラーが出た時のウィンドウの状態を
画像にして下のアドレスに置きました
ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX
ファイル名「img_error.zip」
「2」がエラーが出たときにダブルクリックする前の状態で
そのダブルクリック後が「3」です
「1」は「スレッドをダブルクリック」する前の状態を確認せずに表示してしまったもので
あとで見たら「3」と内容が違うことに気づいたので念のため添えました。
※さらにもう一度エラーを出して確認すると、その時は「3」と同じでした
危険なファイルに認定される件、勉強になりました。
それと、4つ同時に起動しても4つとも安定の件ありがとうございます
私の環境では、これを4つ起動すると例外なくスローになるので・・・一体どういうことなんでしょう(-_-;)
お手数をおかけいたします。よろしくお願いいたします
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.12 ) |
- 名前:管理人 日時:2022/09/07 01:38
スクリーンショットをアップして頂きありがとうございます
2.png で確認できる winmm.dll スレッド内でのエラーということで原因が分かりました
手元の環境で振動機能に対応した DirectInput のコントローラを接続して A.exe, B.exe, C.exe, D.exe を
実行した所、たろうさんの環境と同じように動作が不安定になりました
Visual Studio 内でのエラーは再現できませんでしたが、最近 DirectInput の振動に関係する
処理を変更したことが本件の原因となっていたと思われるので、少し改良した所
A.exe, B.exe, C.exe を起動した状態で改良された D.exe を起動しても D.exe は不安定にならなくなりました
( 改良前は D.exe も動作が不安定になっていました )
よろしければその変更を加えたこちらのバージョンをお試しください m(_ _;m
https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用
<何故『winmm.dllスレッド内のエラー』から原因がわかったのかご興味がありましたら読んでください>
手元の環境でプログラムを実行した際には winmm.dll スレッドが走っていなかったことと、
たろうさんに載せていただいたログには私の環境では接続していない
振動機能対応 DirectInputコントローラ( JC-U4013S DirectInput Mode )が接続されていたこと、
試しに手元のPCにも振動機能対応 DirectInputコントローラを接続した所 winmm.dll スレッドが
出現したことと、スレッドの『場所』に『joyFF.dll』と書かれていて、
『joy』は joypad や joystick の略、『FF』はForce Feedback の略( 振動機能のこと )だと
推測できたので、振動関係の処理が原因と関係していると分かりました
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.13 ) |
- 名前:たろう 日時:2022/09/07 02:33
すみません・・・・
ABCDをいただいた更新版で作り直し起動したところ確かにスローにならなくなったのですが
このABCDを起動したうえで、念のためさらにEを追加してvisualstudioでデバッグ起動したところ
また×ボタンで閉じるときにエラーが出ました。
(※エラーは20回ほど試してやっと出る感じです)
そのときの状態をまた画像にして以下に入れました
ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX
ファイル名「img_error_2.zip」
プログラムは単純にEを追加しただけです
またなにかご指示いただければ、できる限り実行いたしますので
よろしくお願いいたします。
お忙しいところ、本当にすみません。
----------------------------------------------------------------------------------
#include "DxLib.h"
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
{
//SetMainWindowClassName("test0903");//A
//SetMainWindowClassName("test0903_2");//B
//SetMainWindowClassName("test0903_3");//C
//SetMainWindowClassName("test0903_4");//D
SetMainWindowClassName("test0903_5");//E
SetNotSoundFlag( TRUE );
SetAlwaysRunFlag(1);
ChangeWindowMode(1);
DxLib_Init();
SetDrawScreen( DX_SCREEN_BACK );
int i=0,t=GetNowCount(),t2=0,a=0;
while(ProcessMessage()==0)
{
if(CheckHitKey(KEY_INPUT_F1)){ break; }
i++;t2+=GetNowCount()-t; t=GetNowCount();
DrawFormatString( 0,50,GetColor(255,255,255),"(%d)",a);
if(i>60){a=(int)(t2/i);i=0;t2=0;}
ScreenFlip();ClearDrawScreen();
}
DxLib_End();
return 0;
}
 |
Re: DXライブラリ終了途中?のアクセス違反 ( No.14 ) |
- 名前:管理人 日時:2022/09/07 03:24
お試し頂きありがとうございます
スローにならなくなっただけでも結果が出て良かったです
アップしていただいたスクリーンショットではやはり winmm.dll でエラーになっていますので、
よろしければ DxLib_Init() の呼び出し行の前に
SetUseJoypadVibrationFlag( FALSE );
を実行して、振動機能をOFF( 振動機能関連の初期化もOFFになります )にするというのを
試していただけないでしょうか? m(_ _)m
もしそれでもダメでしたら、次は DirectInput対応のゲームパッドをPCから取り外した状態で実行する、
というのを試してみてください m(_ _;m
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.15 ) |
- 名前:たろう 日時:2022/09/07 13:38
取り急ぎしつれいします
SetUseJoypadVibrationFlag( FALSE );を入れてABCDをすべて作り直し、そのうえでEをvisualstudioでデバッグすると
やはり今まで同様のエラーが出ました(50回ほど試して2回)。
ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX
ファイル名「img_error_3.zip」
その後ゲームパッドを抜いて試すと50回ほど試してエラーは出ませんでした
ただ、エラーが出る確率はもともと低いので、正直微妙ではあります。
m(__)m
-------------------------------------------------
#include "DxLib.h"
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
{
//SetMainWindowClassName("test0903");//A
//SetMainWindowClassName("test0903_2");//B
//SetMainWindowClassName("test0903_3");//C
//SetMainWindowClassName("test0903_4");//D
SetMainWindowClassName("test0903_5");//E
SetNotSoundFlag( TRUE );
SetAlwaysRunFlag(1);
ChangeWindowMode(1);
SetUseJoypadVibrationFlag( FALSE );
DxLib_Init();
SetDrawScreen( DX_SCREEN_BACK );
int i=0,t=GetNowCount(),t2=0,a=0;
while(ProcessMessage()==0)
{
if(CheckHitKey(KEY_INPUT_F1)){ break; }
i++;t2+=GetNowCount()-t; t=GetNowCount();
DrawFormatString( 0,50,GetColor(255,255,255),"(%d)",a);
if(i>60){a=(int)(t2/i);i=0;t2=0;}
ScreenFlip();ClearDrawScreen();
}
DxLib_End();
return 0;
}
-------------------------------------------------
 |
Re: DXライブラリ終了途中?のアクセス違反 ( No.16 ) |
- 名前:たろう 日時:2022/09/07 14:23
追記1
あと一つ気づいたのですが
初めにエラーが出た「Ver3.23c」は8月12日0時頃にダウンロードしたものなので
>最近 DirectInput の振動に関係する処理を変更した
というのがもし8月27日?の件であれば、それより前からある問題かもしれません
また、先月パソコンを買い替えてそれ以降しばらくしてから発生しています。
過去のパソコンの状態は(ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5206)で張り付けたログにありましたので
今のログと比較していただければ、もしかするとヒントがあるかもしれません
追記2
また、DXライブラリ製のソフトを他に一切起動していない状態で
もともとの私の制作中のゲームをデバッグして、×ボタンで閉じたときに
メモリリークが起きました。ほかに起動していなくても可能性が下がるだけでやはりまれに起こる事が確認できました。
このときvisualstudioはimg_error_3とほぼ同じ表示(保存し忘れましたm(__)m)で、winmm.dllも同様でしたし
エラーの位置もDxlib_End()の直後を示していました
※ただしこの場合初めの投稿と同じでフリーズしたウィンドウが残っていました
※その時のログは以下です
0:ファイルアクセス処理の初期化...成功
12:ChangeWindowMode実行
12:ウインドウモードフラグが立てられました
14:DXライブラリの初期化処理開始
14: システムの情報を出力します
14: DXライブラリ Ver3.23e
14: 論理プロセッサの数 : 12
16: OS Windows11 ( Build 22000 )
116: 現時点のCPU動作速度:大体3.58GHz
116: MMX命令を使用します
116: SSE命令が使用可能です
116: SSE2命令が使用可能です
117: CPUベンダ:AuthenticAMD
118: CPU名:AMD Ryzen 5 4500 6-Core Processor
118: COMの初期化... 成功
121: 非同期読み込み処理の初期化...成功
122: メモリ総量:32640.33MB 空きメモリ領域:23134.04MB
122: タイマーの精度を検査します
122: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
123: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz
123: ソフトの二重起動検査... 二重起動はされていませんでした
125: ウインドウクラスを登録します... 登録に成功しました
125: ウインドウモード起動用のウインドウを作成します
125: ディスプレイ情報のセットアップ開始
125: モニターの数:2 ディスプレイデバイスの数:4
125: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz 96x96dpi
126: No.1 モニター名:\\.\DISPLAY2 1080x1920 32bit 60Hz 96x96dpi
162: ディスプレイ情報のセットアップ完了
163: ウインドウ矩形 ( 671, 3 )-( 1233, 1014 )
167: ウインドウの作成に成功しました
167: ウインドウを表示します
211: IMEを無効にしました
214: ウインドウスタイルをウインドウモード用に変更します... 完了
250: DirectInput関係初期化処理
250: XInput DLL の読み込み中... 成功
254: DirectInput8 の取得を試みます...成功
337: 引き続き初期化処理... 初期化成功
343: ジョイパッドの初期化...
343: XInput 対応コントローラーのチェックを開始します
344: XInput 対応コントローラー No.0 をチェック
344: XInput 対応コントローラー No.0 の接続は確認できませんでした
344: XInput 対応コントローラー No.1 をチェック
345: XInput 対応コントローラー No.1 の接続は確認できませんでした
345: XInput 対応コントローラー No.2 をチェック
346: XInput 対応コントローラー No.2 の接続は確認できませんでした
346: XInput 対応コントローラー No.3 をチェック
346: XInput 対応コントローラー No.3 の接続は確認できませんでした
347: XInput 対応コントローラーのチェック完了
347: DirectInput 対応ジョイパッドの列挙を開始します
367: DirectInput 対応入力装置を検出しました
368: Device Product GUID : 200f056e,0000,0000,00,00,50,49,44,56,49,44
368: Device Instance GUID : 912fabe0,1db5,11ed,80,03,44,45,53,54,00,00
368: DirectInputDevice8 の作成... 成功
370: DirectInputDevice の情報を取得します... 成功
371: Device Product Name : JC-U4013S DirectInput Mode
371: Device Instance Name : JC-U4013S DirectInput Mode
371: 検出した DirectInput 対応入力装置が Xbox360コントローラーか確認... 不一致
372: 検出した DirectInput 対応入力装置が XboxOneコントローラーか確認... 不一致
372: 検出した DirectInput 対応入力装置が XInput 対応コントローラーか確認... 不一致
751: DirectInputDevice のデータ形式に JOYSTICK 形式を設定... 成功
751: DirectInputDevice の協調レベルに DISCL_FOREGROUND | DISCL_EXCLUSIVE を設定... 成功
753: DirectInputDevice から取得する X軸 の値の範囲を設定... 成功
753: DirectInputDevice から取得する Y軸 の値の範囲を設定... 成功
754: DirectInputDevice から取得する Z軸 の値の範囲を設定... 成功
755: DirectInputDevice から取得する Rx軸 の値の範囲を設定... 成功
755: DirectInputDevice から取得する Ry軸 の値の範囲を設定... 成功
756: DirectInputDevice から取得する Rz軸 の値の範囲を設定... 成功
756: DirectInputDevice のボタンの数を取得... 成功 ボタンの数は 13 個です
776: DirectInputDevice の X軸 のデッドゾーンを設定... 成功
776: DirectInputDevice の Y軸 のデッドゾーンを設定... 成功
777: DirectInputDevice の Z軸 のデッドゾーンを設定... 成功
778: DirectInputDevice の Rx軸 のデッドゾーンを設定... 成功
778: DirectInputDevice の Ry軸 のデッドゾーンを設定... 成功
779: DirectInputDevice の Rz軸 のデッドゾーンを設定... 成功
780: DirectInputDevice の DirectInputEffect No.0 を作成... 成功
780: DirectInputDevice の DirectInputEffect No.1 を作成... 成功
781: DirectInputDevice の通知処理用の Event を作成... 成功
782: DirectInputDevice の通知処理用の Event を DirectInputDevice に設定... 成功
783: DirectInputDevice のアクセス権を取得... 成功
791: 検出した DirectInput 対応入力装置を入力ナンバー 0 で登録します
791: 検出した DirectInput 対応入力装置の初期化は正常に終了しました
841: DirectInput 対応ジョイパッドの列挙終了
842: ジョイパッドの初期化は正常に終了しました
842: マウスデバイスの初期化... 初期化成功
843: キーボードデバイスの初期化... 初期化成功
845: DirectInput 関連の初期化は正常に終了しました
849: WASAPI の初期化を行います
858: デバイス名 : スピーカー (Realtek(R) Audio)
863: デフォルト遅延時間 : 10.000 ms
864: 最小遅延時間 : 3.000 ms
864: 遅延時間 : 10.000 ms
868: チャンネル数 : 2 ch
868: 量子化ビット深度 : 32 bit
869: 有効ビット深度 : 32 bit
869: サンプリングレート : 48000 Hz
869: データ形式 : 浮動小数点型
889: 動作モード : 共有モード
889: WASAPI の初期化は正常に終了しました
892: d3d11.dll の読み込み.... 成功
896: dxgi.dll の読み込み.... 成功
897: API CreateDXGIFactory2 のアドレスを取得します.... 成功
898: IDXGIFactory2 を作成します.... 成功
907: API CreateDXGIFactory6 のアドレスを取得します.... 成功
907: IDXGIAdapter を列挙
908: Adapter No.0 Desc:NVIDIA GeForce GTX 1660 SUPER VRAM:5992MB
908: Output Device No.0 Name:\\.\DISPLAY1 ( 0, 0 )-( 1920, 1080 )
909: Output Device No.1 Name:\\.\DISPLAY2 ( -2160, -1395 )-( -1080, 525 )
909: Adapter No.1 Desc:Microsoft Basic Render Driver VRAM:0MB
910: API D3D11CreateDevice のアドレスを取得します.... 成功
910: IDXGIAdapter を取得します.... 成功
911: IDXGIAdapter1 を取得します.... 成功
912: IDXGIAdapter2 を取得します.... 成功
912: IDXGIAdapter3 を取得します.... 成功
913: IDXGIAdapter4 を取得します.... 成功
914: Direct3D 11 FeatureLevel 11_0 以上を対象とします
914: ID3D11Device オブジェクトを取得します.... 成功
1004: IDXGIDevice1 を取得します.... 成功
1005: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました
1005: [ウインドウモード 1080x1920 ( 687, 41 )-( 1233, 1013 )]
1006: IDXGISwapChain2 を作成します.... 成功
1008: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000
1008: IDXGIOutput を取得します.... 成功
1009: Graphics Device:NVIDIA GeForce GTX 1660 SUPER
1009: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1009: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です
1010: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です
1010: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です
1010: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です
1011: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
1011: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です
1011: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1011: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です
1012: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1012: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です
1012: DXT2テクスチャフォーマットは使えません
1013: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です
1013: DXT4テクスチャフォーマットは使えません
1013: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です
1013: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です
1013: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です
1013: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
1014: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
1014: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
1014: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
1014: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
1015: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
1015: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
1015: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
1015: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
1015: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
1016: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
1016: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です
1016: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です
1016: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です
1017: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です
1017: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です
1017: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です
1018: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です
1018: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です
1018: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です
1019: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です
1019: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です
1019: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です
1019: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です
1019: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です
1020: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1
1020: 同時にレンダリングできるバッファの数:8
1020: 最大テクスチャサイズ 幅:16384 高さ:16384
1021: 標準描画用の頂点バッファの作成.... 成功
1021: シェーダーコード関係の初期化.... 成功
1034: 各種シェーダー用定数バッファの作成.... 成功
1037: 各種 ID3D11InputLayout の作成.... 成功
1061: 画像の単純転送処理の初期化... 成功
1063: 深度バッファを作成します.... 成功
1065: フォントの初期化を行います
1069: フォントの初期化は正常に終了しました
1151: 文字コードバッファの初期化を行います... 完了しました
1169:DXライブラリの初期化処理終了
1326:画像ファイル D:\vs\Yamadain\sys\mm\m10002.png がありません
9015:ウインドウを閉じようとしています
9118:フォントの初期化を行います
9118:フォントの初期化は正常に終了しました
9150:d3d11.dll の解放 1
9151:dxgi.dll の解放 1
9152:Direct3D11 のオブジェクト数を出力
9153:Direct3D11 のオブジェクト合計数 : 0
9153:DirectInput 関連の終了処理... 完了
9259:サウンド関連の終了処理...
 |
Re: DXライブラリ終了途中?のアクセス違反 ( No.17 ) |
- 名前:たろう 日時:2022/09/07 21:08
追記3
あれから何回も試したので、
ゲームパッドを外せばエラーが出なくなるのは
間違いなさそうですm(__)m
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.18 ) |
- 名前:管理人 日時:2022/09/08 00:26
沢山のご情報ありがとうございます
PCを変えてからというのは気になりますね…
( AMD製CPUになったことが関連している or コア数が多いCPUになったことが関連している、という可能性はあるかもしれません… )
ゲームパッドが関連しているのは間違いなさそうですが、サウンド関連の終了処理の途中で止まるというのも謎ですね…
とりあえず DirectInput を使用しなければ問題が発生しなくなるかもしれませんので、
よろしければ DxLib_Init() の前に
SetUseDirectInputFlag( FALSE );
という記述を追加して、DirectInput を使用しないようにしてみてください
DirectInput が原因であれば、これでエラーが発生しなくなると思います
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.19 ) |
- 名前:たろう 日時:2022/09/08 03:05
いろいろ試していたところ
内容に誤りがあったので修正しています
---------------------------------------------------------
いつもありがとうございます
SetUseDirectInputFlag( FALSE );を加えて50回ほど試してエラーは出ませんでした。
SetUseDirectInputFlag( FALSE );を使うとXinputも受け付けなくなってしまうようで
ゲームパッドを使う前提のゲームを作っているので、この方法では解決できなそうです。
相変わらず無知でよくわからないのですが、今回のエラーは
単純に私のゲームパッドが壊れていて、それが原因でメモリリークが発生する。
なんていう事もあるんでしょうか?
そうであれば管理人さんの環境でもスローになるエラーは再現できたようですが
偶然二つの別エラーだった可能性もありそうです
質問ばかりですみませんm(__)m
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.20 ) |
- 名前:たろう 日時:2022/09/08 10:54
追記
No7でいただいたプロジェクト(DxLibSourceTest_WithUseCLib)のTest.cppを以下(末尾)のように変えて
ABCD(※No15で作ったもの)を起動しながらvisualstudio2020でデバッグを繰り返したところ
いろいろなバグが出ましたので、また画像にしてファイルポストに置きました。
これは参考になりませんでしょうか?
ttps://file-post.net/ja/s0/d1/1662269745_29787023741_168/?id=hVNXxHlFNtsX
ファイル名「img_error_4.zip」
具体的にはTest.cppを「振動や音のオフ」を外して、ReSetupInputSystem();を加えましたが
こうするとたまに起動してすぐエラーが出るようになりました。
その時の画面の状態が1,4(※5のクリック前),5です。
5の時のログが「Log(5).txt」です。
2,3は今まで通りウィンドウを閉じるときに発生した時のものです。
2のログは保存忘れましたがNo.0の時と同様にサウンド関連で止まっていたと記憶しています
※ジョイパッドは接続した状態です
m(__)m
-------------------------------------------------------------------------------------------------------------------------
#include "DxLib.h"
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
{
//SetMainWindowClassName("test0903");//A
//SetMainWindowClassName("test0903_2");//B
//SetMainWindowClassName("test0903_3");//C
//SetMainWindowClassName("test0903_4");//D
SetMainWindowClassName("test0903_5");//E
SetAlwaysRunFlag(1);
ChangeWindowMode(1);
DxLib_Init();
ReSetupInputSystem();
SetDrawScreen( DX_SCREEN_BACK );
int i=0,t=GetNowCount(),t2=0,a=0;
while(ProcessMessage()==0)
{
if(CheckHitKey(KEY_INPUT_F1)){ break; }
i++;t2+=GetNowCount()-t; t=GetNowCount();
DrawFormatString( 0,50,GetColor(255,255,255),"(%d)",a);
if(i>60){a=(int)(t2/i);i=0;t2=0;}
ScreenFlip();ClearDrawScreen();
}
DxLib_End();
return 0;
}
 |
Re: DXライブラリ終了途中?のアクセス違反 ( No.21 ) |
- 名前:管理人 日時:2022/09/10 03:20
> 相変わらず無知でよくわからないのですが、今回のエラーは
> 単純に私のゲームパッドが壊れていて、それが原因でメモリリークが発生する。
> なんていう事もあるんでしょうか?
すみません、今のところ原因不明です
ただ、その後私の環境でもたろうさんの環境で発生したエラー( winmm.dll の中でエラー )を
再現することができました
> No7でいただいたプロジェクト(DxLibSourceTest_WithUseCLib)のTest.cppを以下(末尾)のように変えて
> ABCD(※No15で作ったもの)を起動しながらvisualstudio2020でデバッグを繰り返したところ
> いろいろなバグが出ましたので、また画像にしてファイルポストに置きました。
> これは参考になりませんでしょうか?
ファイルのアップありがとうございます
画像を拝見する限りでは今までのエラーと同じようにやはり winmm.dll 内でのエラーが原因となっているようです
サウンド関連の終了処理でエラーが発生していたので、サウンドの処理を行わないようにしてみたのですが、
それでも同様のエラーが発生するので、サウンドの処理は関係なかったようです
winmm.dll 内で発生しているエラーをどうにかするのはかなり難しいと思いますので
( 断言はできませんが、なんとなく DirectInput ( winmm.dll ) のバグのように感じます… )
やはり DirectInput を使用しないようにするのが一番の対処法だと思います
SetUseDirectInputFlag( FALSE ); を実行してしまうと XInput も受け付けなくなってしまっていましたが、
SetUseDirectInputFlag( FALSE ); を実行しても XInput は受け付けるようにしましたので、
よろしければこちらの改良バージョンをお試しください m(_ _;m
( そして SetUseDirectInputFlag( FALSE ); を実行して DirectInput は使用しないようにしてください )
https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.22 ) |
- 名前:たろう 日時:2022/09/10 10:46
お忙しいところご対応いただきありがとうございます
SetUseDirectInputFlag(FALSE);を実行してもXInputを受け付けることを確認いたしました
DXライブラリ外の問題だったという事でしょうか
大変なお手数をおかけいたしましたm(__)m
今後もし回避する手立てが見つかりましたら、教えていいただけたらと思います。
最後にお聞きしたいのですが、バグを再現できたのは
デバッグを繰り返して運よくバグが発生したという感じでしょうか?
それともなにか条件を変えたら起きた感じでしょうか?
(もし限られたケースで発生するだけであれば
終了時にまれに起こるバグなので、SetUseDirectInputFlag(FALSE);を使わずに
Dinput非推奨という程度でいいのかもしれないので)
m(__)m
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.23 ) |
- 名前:管理人 日時:2022/09/10 13:08
SetUseDirectInputFlag(FALSE); が正常に動作したようでなによりです
> 最後にお聞きしたいのですが、バグを再現できたのは
> デバッグを繰り返して運よくバグが発生したという感じでしょうか?
> それともなにか条件を変えたら起きた感じでしょうか?
振動機能対応ゲームパッド( JC-U4113S )を接続した状態で
たろうさんの No.20 の手順でデバッグ実行を繰り返したところ現象が再現しました
( 起動時のタイミングや、ウィンドウを閉じるタイミングどちらのケースもありました )
逆に JC-U4113S を接続していなければ現象は発生しません
なのでもしかしたら JC-U4113S や JC-U4013S のドライバに原因があるのかもしれません
ELECOM製以外の振動機能対応ゲームパッドは所持していないので、
Logicool製の振動機能対応ゲームパッド( F710 )を購入してみました
届いたら試してこちらに結果をご報告します
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.24 ) |
- 名前:たろう 日時:2022/09/10 14:28
ご返信ありがとうございますm(__)m
同じシリーズのゲームパッドということであれば
ドライバとwindowsの仕様が合わなくなったとかで、
このシリーズでのみ起こる問題だったらうれしいですね
ただ最近のアンドロイド&PC両用ゲームパッドなども
調べたら、X-inputだったので
D-inputはもう捨てる時期だと、受け入れる
心の準備はできています(-_-;)
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.25 ) |
- 名前:管理人 日時:2022/09/11 22:09
Logicool製の振動機能対応ゲームパッド( F710 )を購入して試してみたのですが、
DirectInputモードでは振動せず、『ELECOM以外のメーカーの振動機能対応ゲームパッドでも本件の
現象が発生するか』の検証できませんでした…
確認してみたところ、F710 の発売は 2010年で、一時は Windows10 で正常に使えないことが
あったことや、Windows11 での正式対応がなされていないなど、既に時代についていけていない感の
あるデバイスでした orz ( XInputモードでは振動するのですが… )
ちょっとこれ以上ゲームパッドを買い足すのは金銭的にも置き場所的にも厳しいので、
申し訳ありませんが検証は断念しようと思います m(_ _;m
> ただ最近のアンドロイド&PC両用ゲームパッドなども
> 調べたら、X-inputだったので
> D-inputはもう捨てる時期だと、受け入れる
> 心の準備はできています(-_-;)
XInput も登場は 2003年なので今や DirectInput と大差ないくらい古いAPIなんですけどね… (^_^;
使いやすく動作も安定しているのですが、何故か DirectInput より機能が少ないという…
XInput2 のような対応ボタン数などが増えた上位互換のAPIが出てきてもおかしくないのですが、何故か無いんですよね… (- -;;
ともあれ解決できずすみませんでした
DirectInput を使用する場合も振動機能に非対応のゲームパッドであれば本件のエラーは発生しませんので、
DirectInput を使用するかどうかを選択できるオプションなどを付ける形でも良いのではないかと思います m(_ _;m
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.26 ) |
- 名前:たろう 日時:2022/09/11 23:02
私の話から始まって、多大なご負担をおかけしてしまいましたm(__)m
XInputも相当古いものなんですね、ただ先ほども調べたのですが
アマゾンで売っているゲームパッドはXinputかX,D両用以外はよほど潜らないと
存在しないような状態なので、むしろDirectinputを受け入れないほうが
スマートでカッコイイ気もします。
あと、しばらくするとウィンドウズの仕様が変わって直るなんてことも
あるかもしれませんから、今後定期的に確認しようとおもいますので
その点継続します
今回も大変お手数をおかけしてしまいました。
ありがとうございましたm(__)m
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.27 ) |
- 名前:たろう 日時:2022/09/12 00:59
すみません、もしかすると解決かもしれません。
結局SetUseDirectInputFlag( FALSE );を使ってDirectInputを使用しないつもりで
大元のゲームのプログラムを書き換えてテストしていたところ、
SetUseDirectInputFlag( FALSE );を使っても、XinputだけでなくDirectInputも
受け付けていることがわかりました。
またテストプログラム(↓)を作りましたが
DirectInputのゲームパッドで上を押すと1が表示される仕組みです
問題はこのあとなんですが、
このプログラムで例のABCDを起動しながらデバッグを繰り返しても
エラーが出ないようです。
SetUseDirectInputFlag( FALSE );を使っているのに
なぜかDirectInputを受け付けて、それでエラーが出ないわけですから
解決してしまっているように見えます・・・(-_-;)
管理人さんの環境ではどうでしょうか?
逆にSetUseDirectInputFlag( FALSE );の機能が働いていないことになりますが
現在これを使うことで内部的に何が変わる状態になっているのでしょうか?
(それが分かればこれまでのエラーの原因が分かるのではないかと・・・)
すみません、なにか勘違いしているかもしれません
ご確認いただけると助かりますm(__)m
---------------------------------------------------------------------------
#include "DxLib.h"
int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
{
//SetMainWindowClassName("test0903");//A
//SetMainWindowClassName("test0903_2");//B
//SetMainWindowClassName("test0903_3");//C
//SetMainWindowClassName("test0903_4");//D
SetMainWindowClassName("test0903_5");//E
SetNotSoundFlag( TRUE );
SetAlwaysRunFlag(1);
ChangeWindowMode(1);
SetUseJoypadVibrationFlag( FALSE );
SetUseDirectInputFlag( FALSE );
DxLib_Init();
SetDrawScreen( DX_SCREEN_BACK );
int i=0,t=GetNowCount(),t2=0,a=0,di=0;
while(ProcessMessage()==0)
{
int Pad = GetJoypadInputState( DX_INPUT_PAD1 );
di=0;if(Pad & PAD_INPUT_UP ){ di=1;}
if(CheckHitKey(KEY_INPUT_F1)){ break; }
i++;t2+=GetNowCount()-t; t=GetNowCount();
DrawFormatString( 0,50,GetColor(255,255,255),"(%d) directinput(%d)",a,di);
if(i>60){a=(int)(t2/i);i=0;t2=0;}
ScreenFlip();ClearDrawScreen();
}
ReSetupInputSystem();
ReSetupJoypad();
DxLib_End();
return 0;
}
 |
Re: DXライブラリ終了途中?のアクセス違反 ( No.28 ) |
- 名前:管理人 日時:2022/09/13 00:42
|
Re: DXライブラリ終了途中?のアクセス違反 ( No.29 ) |
- 名前:たろう(解決) 日時:2022/09/13 01:13
そうだったんですね、またまた無知ですみません・・・いろいろ納得できました(-_-;)
振動は使う予定ですが、Xinputでのみ振動するという事で私は全然OKなので
それであれば、No23の時点で、私の問題としては解決になっていました。
どうしてもDirectinputで振動させたいという方もいるかもしれませんし
謎は残った部分もあるかもしれませんが、スレを立てた私の問題としては完全に解決です
今回もまた大変お手数をおかけいたしましたが、大変助かりました。
本当にありがとうございましたm(__)m
|