トップページ > 記事閲覧
パスの長さのバグ?
名前:ケジメ 日時: 2014/11/13 14:58

どうも、お忙しい中すみません。 連続の質問等すみません。 環境:windows7 Home 32bit DXライブラリ 3.13 Visual C++ 2008 Express Edition マルチバイト文字環境でコンパイルしています。 LoadGraph系で発生したのですが、ファイルのパスの長さ がどうも拡張子を合わせて254文字以上だと「0xC0000005: Access violation」が発生します。 253文字だとエラーが発生しません。 256文字(拡張子合わせて260字)だと駄目なのは知っています。 画像自体はサンプルに付いている「Scene1.jpg」を使用しています。 再現コード #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode(TRUE) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } char title[64]; char str[] = "D:\\DxLib_VC\\サンプルプログラム実行用フォルダ\\新しいフォルダー12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345\\01234567 - コピー - コピー - コピー - コピー - コピー - 1234567.jpg"; int len = strlen(str); sprintf_s(title,64,"文字数:%d",len); SetMainWindowText(title); // BMP画像の表示 LoadGraphScreen( 0 , 0 , str , TRUE ) ;//254文字だと落ちる 253だとOK WaitKey() ; // キーの入力待ち((7-3)『WaitKey』を使用) DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }
メンテ

Page: 1 |

Re: パスの長さのバグ? ( No.1 )
名前:ケジメ 日時:2014/11/13 15:05

追加の情報です。 SetUseDXArchiveFlagをFALSEにして試してみると、257文字まで大丈夫でした。
メンテ
Re: パスの長さのバグ? ( No.2 )
名前:管理人 日時:2014/11/15 18:36

すみません、内部の処理でファイルパスを保存するバッファの長さが256文字になってしまっている箇所がありました 修正版をアップしましたので、よろしければお使いください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
メンテ

Page: 1 |

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

   クッキー保存