トップページ > 記事閲覧
新しいバージョンでアクセス違反が出る
名前:たろう 日時: 2021/09/29 12:37

他スレに投稿したのですが、原因がそれ以前にありそうなので新スレにしました ------------------------------------------------------------------------ 以前動画プレイヤーを作ったのですが、 「SetChangeScreenModeGraphicsSystemResetFlagで画像が正常に描画されなくなります」の 20210928のバージョンのDXライブラリで起動すると、アクセス違反が出てしまいます 20210502のバージョンに戻して起動するとアクセス違反にならないのですが その間のバージョンを持っていないので、どの時点で問題が起こるのか分からず困っています とりあえず、バグが出たときのログを貼り付けます。 外部のroamingにあるテキストファイル(UTF-8)を読み込んで、 そこにある「D:\folder\動画」などのフォルダ位置を表した文章を取り込み その位置にある動画を再生するような仕組みなのですが そのフォルダ名に日本語があるとエラーが出るようです。 また、日本語のないフォルダのみにした場合は、動くのですが フォルダ名を表示すると文字化けしています。※(0502バージョンでは問題ありません) 恐らく文字関係で何か変更があったのではないかと思うのですが アドバイスを頂けますでしょうか? なお、以前相談させていただいた通り、 ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5053 のような仕組みでフォルダを読んでいます 0:ディスプレイ情報のセットアップ開始 0: モニターの数:2 ディスプレイデバイスの数:4 0: No.0 モニター名:\\.\DISPLAY1 1920x1080 32bit 60Hz 1: No.1 モニター名:\\.\DISPLAY2 1080x1920 32bit 60Hz 37:ディスプレイ情報のセットアップ完了 37:ChangeWindowMode実行 38:ウインドウモードフラグが立てられました 41:DXライブラリの初期化処理開始 41: システムの情報を出力します 42: DXライブラリ Ver3.22d 42: 論理プロセッサの数 : 12 42: OS Windows10 ( Build 19043 ) 142: 現時点のCPU動作速度:大体3.16GHz 142: MMX命令を使用します 142: SSE命令が使用可能です 625: SSE2命令が使用可能です 625: CPUベンダ:GenuineIntel 626: CPU名:Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz 627: COMの初期化... 成功 630: 非同期読み込み処理の初期化...成功 631: ファイルアクセス処理の初期化...成功 631: メモリ総量:16308.28MB 空きメモリ領域:10795.08MB 632: タイマーの精度を検査します 632: 精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 632: パフォーマンスカウンターを使用します タイマー精度 : 10000.000000 KHz 632: ソフトの二重起動検査... 二重起動はされていませんでした 634: ウインドウクラスを登録します... 登録に成功しました 634: ウインドウモード起動用のウインドウを作成します 638: ウインドウの作成に成功しました 638: ウインドウを表示します 660: IMEを無効にしました 662: ウインドウスタイルをウインドウモード用に変更します... 完了 691: DirectInput関係初期化処理 691: XInput DLL の読み込み中... 成功 695: DirectInput7 の取得中... DirectInput8 の取得を試みます...成功 713: 引き続き初期化処理... 初期化成功 715: ジョイパッドの初期化... 1122: 入力装置を見つけました 1123: Device Instance Name : JC-U4013S DirectInput Mode 1123: Device Product Name : JC-U4013S DirectInput Mode 1124: 周期的エフェクトの作成に失敗しました。 1124: 周期的エフェクトの作成に失敗しました。 1126: ジョイパッドの追加は正常に終了しました 1128: ジョイパッドの初期化は正常に終了しました 1128: マウスデバイスの初期化... 初期化成功 1128: キーボードデバイスの初期化... 初期化成功 1130: DirectInput 関連の初期化は正常に終了しました 1133: WASAPI の初期化を行います 1142: デフォルト遅延時間 : 10.000 ms 1142: 最小遅延時間 : 3.000 ms 1142: 遅延時間 : 10.000 ms 1144: チャンネル数   : 2 ch 1144: 量子化ビット深度 : 32 bit 1144: 有効ビット深度  : 32 bit 1144: サンプリングレート : 48000 Hz 1145: データ形式 : 浮動小数点型 1175: 動作モード : 共有モード 1175: WASAPI の初期化は正常に終了しました 1177: d3d11.dll の読み込み.... 成功 1180: dxgi.dll の読み込み.... 成功 1180: API CreateDXGIFactory2 のアドレスを取得します.... 成功 1180: IDXGIFactory2 を作成します.... 成功 1182: IDXGIAdapter を列挙 1182: Adapter No.0 Desc:NVIDIA GeForce GTX 1060 6GB 1182: Output Device No.0 Name:\\.\DISPLAY1 1183: Output Device No.1 Name:\\.\DISPLAY2 1183: Adapter No.1 Desc:Microsoft Basic Render Driver 1183: API D3D11CreateDevice のアドレスを取得します.... 成功 1183: IDXGIAdapter を取得します.... 成功 1183: Direct3D 11 FeatureLevel 11_0 以上を対象とします 1184: ID3D11Device オブジェクトを取得します.... 成功 1279: IDXGIDevice1 を取得します.... 成功 1279: IDXGIDevice1->SetMaximunFrameLatency( 1 ); を実行しました 1280: [ウインドウモード 1920x1080] 1280: IDXGISwapChain2 を作成します.... 成功 1284: IDXGIFactory2->CreateSwapChainForHwnd の戻り値:0x00000000 1284: IDXGIOutput を取得します.... 成功 1285: Graphics Device:NVIDIA GeForce GTX 1060 6GB 1285: 画面のフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1285: 16bit Zバッファフォーマットは DXGI_FORMAT_D16_UNORM です 1285: 24bit Zバッファフォーマットは DXGI_FORMAT_D24_UNORM_S8_UINT です 1285: 32bit Zバッファフォーマットは DXGI_FORMAT_D32_FLOAT です 1286: 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1286: 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1286: アルファ付き 16bit カラーフォーマットは DXGI_FORMAT_B4G4R4A4_UNORM です 1286: アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1286: アルファテスト用 16bit カラーフォーマットは DXGI_FORMAT_B5G5R5A1_UNORM です 1286: アルファテスト用 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1286: DXT1テクスチャフォーマットは DXGI_FORMAT_BC1_UNORM です 1286: DXT2テクスチャフォーマットは使えません 1286: DXT3テクスチャフォーマットは DXGI_FORMAT_BC2_UNORM です 1286: DXT4テクスチャフォーマットは使えません 1287: DXT5テクスチャフォーマットは DXGI_FORMAT_BC3_UNORM です 1287: BC7_UNORM テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM です 1287: BC7_UNORM_SRGB テクスチャフォーマットは DXGI_FORMAT_BC7_UNORM_SRGB です 1287: ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1287: ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1287: ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1287: 1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1287: 1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1287: 1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1288: 1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1288: 2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1288: 2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1288: 2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1288: 2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1288: 描画用 16bit カラーフォーマットは DXGI_FORMAT_B5G6R5_UNORM です 1288: 描画用 32bit カラーフォーマットは DXGI_FORMAT_B8G8R8X8_UNORM です 1288: 描画用アルファ付き 32bit カラーフォーマットは DXGI_FORMAT_R8G8B8A8_UNORM です 1288: 描画用 ABGR 整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_UNORM です 1288: 描画用 ABGR 浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16B16A16_FLOAT です 1289: 描画用 ABGR 浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32B32A32_FLOAT です 1289: 描画用1チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8_UNORM です 1289: 描画用1チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_UNORM です 1289: 描画用1チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16_FLOAT です 1289: 描画用1チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32_FLOAT です 1289: 描画用2チャンネル整数 8 ビット型カラーフォーマットは DXGI_FORMAT_R8G8_UNORM です 1289: 描画用2チャンネル整数 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_UNORM です 1289: 描画用2チャンネル浮動小数点 16 ビット型カラーフォーマットは DXGI_FORMAT_R16G16_FLOAT です 1289: 描画用2チャンネル浮動小数点 32 ビット型カラーフォーマットは DXGI_FORMAT_R32G32_FLOAT です 1290: 使用する機能レベル:D3D_FEATURE_LEVEL_11_1 1290: 同時にレンダリングできるバッファの数:8 1290: 最大テクスチャサイズ 幅:16384 高さ:16384 1290: 標準描画用の頂点バッファの作成.... 成功 1290: シェーダーコード関係の初期化.... 成功 1300: 各種シェーダー用定数バッファの作成.... 成功 1301: 各種 ID3D11InputLayout の作成.... 成功 1321: 画像の単純転送処理の初期化... 成功 1322: 深度バッファを作成します.... 成功 1324: フォントの初期化を行います 1326: フォントの初期化は正常に終了しました 1401: 文字コードバッファの初期化を行います... 完了しました 1418:DXライブラリの初期化処理終了
メンテ

Page: 1 |

Re: 新しいバージョンでアクセス違反が出る ( No.1 )
名前:管理人 日時:2021/09/30 04:32

最近のバージョンではアクセス違反が発生してしまう、ですか…何故でしょう… ログには特に原因に繋がりそうなものは出力されていないようです フォルダ名に日本語があるとエラーになるとのことですが、具体的には どのような処理を行った際にアクセス違反が発生するのでしょうか? とりあえず手元で以下のような日本語名のフォルダの中にある動画ファイルを 再生するプログラムを実行してみましたが、アクセス違反は発生しませんでした #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // 使用する文字コード形式を UTF-8 にする SetUseCharCodeFormat( DX_CHARCODEFORMAT_UTF8 ); // ウインドウモードで起動 ChangeWindowMode( TRUE ) ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // 日本語名のフォルダの中にある動画ファイルを再生する PlayMovie( u8"D:/動画/TestMovie.mp4", 1, DX_MOVIEPLAYTYPE_NORMAL ); // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; }
メンテ
Re: 新しいバージョンでアクセス違反が出る ( No.2 )
名前:たろう 日時:2021/09/30 15:27

いつもありがとうございます 元のプログラムが大きいので、恐らくアクセス違反の原因と思われる 文字化けの部分だけを抜き出しました 下を各バージョンのDXライブラリで実行すると・・・ 20210928版だと上に「abcde」、下に文字化けした文字 20210502版だと両方文字化けせず「abcde」になります DX_CHARCODEFORMAT_UTF8にしていますが、しなくても文字化けするようです 宜しくお願いいたします<(_ _)> ----------------------------------------------------------------- #include "DxLib.h" #include <locale.h> int WINAPI wWinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow ) { setlocale( LC_ALL, ".utf8" ); SetUseCharCodeFormat( DX_CHARCODEFORMAT_UTF8 ); ChangeWindowMode(1); DxLib_Init(); int fon=CreateFontToHandle(u8"MS ゴシック",38,9,(0x02),0); int col=GetColor(255,255,255); while( 1 ) { ProcessMessage(); ClearDrawScreen(); if(GetWindowUserCloseFlag(TRUE)){break;} DrawFormatString( 50,100,col,u8"abcde",0 ); DrawStringToHandle(50,200,u8"abcde",col,fon); ScreenFlip(); } DxLib_End(); return 0; }
メンテ
Re: 新しいバージョンでアクセス違反が出る ( No.3 )
名前:管理人 日時:2021/10/01 00:57

ありがとうございます 載せていただいたプログラムで手元でも文字化けを確認することができました ( 最近変更した文字関係の処理が原因のバグでした ) 修正版をアップしましたので、お手数で申し訳ありませんが よろしければお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibVCTest.zip // Windows版 VisualC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCCTest.zip // Windows版 BorlandC++ 用 https://dxlib.xsrv.jp/temp/DxLibBCC2Test.zip // Windows版 C++ Builder 10.3 用 https://dxlib.xsrv.jp/temp/DxLibGCC_MinGWTest.zip // Windows版 MinGW 用 https://dxlib.xsrv.jp/temp/DxLibDotNet.zip // Windows版 .NET用 https://dxlib.xsrv.jp/temp/DxLibMakeTest.zip // ソース (中身を既存のライブラリのファイルに上書きして『リビルド』をして下さい)
メンテ
Re: 新しいバージョンでアクセス違反が出る ( No.4 )
名前:たろう(解決) 日時:2021/10/01 06:04

いつもすみません 先ほど修正版で問題がなくなっていることを確認いたしました お手数をおかけいたしました<(_ _)>
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存