エラーが出て画像が表示されない
エラーが出て画像が表示されない
このようなプログラムを書いたのですが以下のエラーが出て実行されません。
(5) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
(5) : error C2086: 'int img' : 再定義されました。
(3) : 'img' の宣言を確認してください。
コンパイラはVC2008EEを使用しています。
(5) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
(5) : error C2086: 'int img' : 再定義されました。
(3) : 'img' の宣言を確認してください。
コンパイラはVC2008EEを使用しています。
Re: エラーが出て画像が表示されない
すでに定義している変数と同じ名前の関数を定義することはできません。
Re: エラーが出て画像が表示されない
DrawGraph( 0, 0, img, TRUE );の場合下のエラーが増えました。
(8) : error C2664: 'DxLib::DrawGraph' : 3 番目の引数を 'void (__cdecl *)(void)' から 'int' に変換できません。(新しい機能 ; ヘルプを参照)
DrawGraph( 0, 0, img2, TRUE );の場合同じエラーです。
(8) : error C2664: 'DxLib::DrawGraph' : 3 番目の引数を 'void (__cdecl *)(void)' から 'int' に変換できません。(新しい機能 ; ヘルプを参照)
DrawGraph( 0, 0, img2, TRUE );の場合同じエラーです。
Re: エラーが出て画像が表示されない
そのコードが正しくなさそうなので、質問者さんは混乱されているかもしれません。紫電 さんが書きました:こうしてみてはどうでしょうか。
変数名をimg2にしたのであれば、
DrawGraph()の第3引数もimg2にしないとまずいですよね?私は詳しくありませんけれど。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: エラーが出て画像が表示されない
そもそも関数外に代入文があるのが大問題だと思いますけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: エラーが出て画像が表示されない
ああ、そうでしたww
DrawGraph( 0, 0, img2, TRUE );
ってかんじですねw
Re: エラーが出て画像が表示されない
そりゃそうですね。softya(ソフト屋) さんが書きました:そもそも関数外に代入文があるのが大問題だと思いますけど。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: エラーが出て画像が表示されない
それとLoadGraph()とDrawGraph()を同じ関数内に書くとメモリリークを起こします。
徐々にメモリ消費量が増えていき、やがてDXライブラリの管理個数の限界を超えて画像が消えます。
「ゲームプログラミングの館」のあちこちに書いてあると思いますが読み込みと表示の関数は必ず分けるようにして下さい。
徐々にメモリ消費量が増えていき、やがてDXライブラリの管理個数の限界を超えて画像が消えます。
「ゲームプログラミングの館」のあちこちに書いてあると思いますが読み込みと表示の関数は必ず分けるようにして下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: エラーが出て画像が表示されない
softya(ソフト屋) さんが書きました:それとLoadGraph()とDrawGraph()を同じ関数内に書くとメモリリークを起こします。
徐々にメモリ消費量が増えていき、やがてDXライブラリの管理個数の限界を超えて画像が消えます。
「ゲームプログラミングの館」のあちこちに書いてあると思いますが読み込みと表示の関数は必ず分けるようにして下さい。
そうなんだw
勉強になりましたw
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: エラーが出て画像が表示されない
より正確に書くとLoadGraph()した画像はDXライブラリの管理ハンドルを1つ消費してDeleteGraph()や画面モードを切り替えない限りメモリ内に常駐します。紫電 さんが書きました:softya(ソフト屋) さんが書きました:それとLoadGraph()とDrawGraph()を同じ関数内に書くとメモリリークを起こします。
徐々にメモリ消費量が増えていき、やがてDXライブラリの管理個数の限界を超えて画像が消えます。
「ゲームプログラミングの館」のあちこちに書いてあると思いますが読み込みと表示の関数は必ず分けるようにして下さい。
そうなんだw
勉強になりましたw
だから、いつでもDrawGraph()で表示できるのですが、もしこのプログラムのように毎回呼び出す関数img()の中にimg2 = LoadGraph( "../dat/img/menu/menu.png" );があるとimg2;に毎回新しい画像ハンドルが設定されます。
これだと前の画像ハンドルは見かけ上は消えたように見えますが、DXライブラリ内には前の画像ハンドル・画像データは残ったままなので秒間60個づつ画像ハンドルとメモリを消費して行くことになります。
まぁ、毎回ファイルを読み込むので遅いですし、30KB程度の画像だとしても1分も立たない内に30KBx60フレームx60秒=約100MBを消費します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。