トップページ > 過去ログ > 記事閲覧
C++Builder6でのLoadGraphScreen()
名前:とんぼ 日時: 2008/11/30 02:06

Borland C++Builder6で利用しようとしていますが、 LoadGraphScreen()関数において、pngを読み込ませようとすると EAccessViolationクラス例外が発生します。 ↓はその際のメッセージです。 --------------------------- デバッガ例外が発生 --------------------------- プロジェクト Project1.exe が EAccessViolation クラスの例外を生成しました。 'アドレス 3265632B でアドレス 0054EB76 に対する書き込み違反がおきました。' プロセスは停止しています。再開するにはステップ実行または実行を選択してください。 --------------------------- OK ヘルプ(H) --------------------------- 対処方法等をご存知の方がおられましたら ご教授お願いいたします。 1. 環境  Windows2000 Professional SP4 C++ Builder6 Personal 2. コード DxLib HELPディレクトリのHTMLにあるサンプルコードを Copy&Pasteしたコードの一部改変で再現します。 > // BMP画像の表示 > LoadGraphScreen( 0 , 0 , "test1.bmp" , TRUE ) ; この"test1.bmp"を、別途用意したpngファイル名に置き換えると EAccessViolationクラス例外が発生します。 3.その他 ・PNGデータは下記の3種類いずれでも例外を発生します。  ・ttp://dixq.net/g/   のページにあるchar.png  ・GV.exeでtest1.bmpをPNG保存したもの  ・JTrim.exeにてtest1.bmpをPNG保存したもの  (Windows2000の標準"ペイント"では、PNGを生成できないため) ・BMPおよびJPGは正常に表示されることを確認しました。

Page: 1 |

Re: C++Builder6でのLoadGraphScreen() ( No.1 )
名前:管理人 日時:2008/12/02 03:34

ご報告ありがとうございます C++Builder6 は所持していないので確かめることができませんでしたが、 現在のバージョンと手元にある Borland C++ Compiler を使ったテストでは 例外が発生することはありませんでした もしかしたら最新バージョンでは正常に動作するかもしれませんので、 宜しければこちらのバージョンをお試しになってみてください m(_ _)m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用 (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
Re: C++Builder6でのLoadGraphScreen() ( No.2 )
名前:とんぼ 日時:2008/12/02 21:48

>管理人様 ご回答ありがとうございます。 早速テスト版を試してみましたが、 状況は変わりませんでした。 C++Builder6ではなく、 jun miuraさんの「BCC Developer」と、 C++Builder6付属のコンパイラ(bcc32.exe)の 組み合わせにおいては正常に動作いたしました。 ビルドの設定やライブラリの設定辺りで、 C++Builderだとちょっとした細工が必要になるのかもしれません。 ひとまずは、jun miuraさんのBCC Developerが 利用できたことは確認いたしましたので、 C++ Builderでの利用を一時諦め、 BCC Developerでの利用に乗り換えようと思います。 失礼致しました。
Re: C++Builder6でのLoadGraphScreen() ( No.3 )
名前:とんぼ 日時:2008/12/02 22:13

>管理人様 立て続けに失礼します。 つい今しがた発生条件が特定できました。 C++ Builderのプロジェクトの設定で 「共有RTL DLLを使う」設定になっていると、 EAccess Violationが発生するようです。 自分は下記の手順で「共有RTL DLLを使う」設定をoffにすることで、 EAccessViolation例外を回避できました。 「プロジェクト」メニュー  →「オプション」選択  →オプションダイアログで「リンカ」タブ選択  →「共有RTL DLLを使う」チェックボックスをfalse →プロジェクト再構築→実行 →透過オプション引数のtrue, falseとも  正常動作するのを確認 ---- なお、C++ Builderにては、サンプルの動作までに 下記の注意点が必要でした。 1. ライブラリ設定  プロジェクトの「ライブラリ」パスに  下記の手順にてプロジェクトの「ライブラリ」  ディレクトリの設定を追加します。  「プロジェクト」メニュー   →「オプション」選択   →オプションダイアログで「ディレクトリ/条件」タブ選択   →「ライブラリパス」の「...」ボタンを押下   →「ディレクトリ」ダイアログにて、「一覧」の舌にあるテキストボックスに、下記の文字列をCopy&Paste     $(BCC)\lib\psdk   →「ディレクトリ」ダイアログで「追加」ボタン押下   →「オプション」ダイアログで「OK」押下 2. ファイル名の相対パスについて  BCC DeveloperやVCと違い、Borland C++ Builderにては、特別な設定等をしない限り、  「ソースのあるディレクトリ=プロジェクトのあるディレクトリ    =exeが生成されるディレクトリ=ファイル参照のカレントディレクトリ」  という状態になります。  よって、サンプルのアーカイブのディレクトリ環境をそのまま利用する場合、  下記のどちらかの対応が必要になります。   a. ファイル名指定で、ファイル名に「debug/」を付与する     例 : LoadGraphScreen( 0 , 0 , "debug\test1.bmp" , TRUE ) ;   b. bmpやpng等の画像ファイルを、Debugディレクトリからそのままプロジェクト(ソース)ディレクトリにコピーする

Page: 1 |