エラーが出て画像が表示されない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
chilt

エラーが出て画像が表示されない

#1

投稿記事 by chilt » 13年前

このようなプログラムを書いたのですが以下のエラーが出て実行されません。

(5) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
(5) : error C2086: 'int img' : 再定義されました。
(3) : 'img' の宣言を確認してください。

コンパイラはVC2008EEを使用しています。

コード:

#include "../include/GV.h"

int img;

img = LoadGraph( "../dat/img/menu/menu.png" );

void img(){
	DrawGraph( 0, 0, img, TRUE );
}

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: エラーが出て画像が表示されない

#2

投稿記事 by h2so5 » 13年前

すでに定義している変数と同じ名前の関数を定義することはできません。

chilt

Re: エラーが出て画像が表示されない

#3

投稿記事 by chilt » 13年前

関数名を変えましたが同じエラーが出ました

紫電
記事: 14
登録日時: 13年前

Re: エラーが出て画像が表示されない

#4

投稿記事 by 紫電 » 13年前

こうしてみてはどうでしょうか。
int imgをimg2にして関数のとこで名前をimgにしてみました。これでエラーは出ないと思います


コード:

#include "../include/GV.h"
 
int img2;
 
img2 = LoadGraph( "../dat/img/menu/menu.png" );
 
void img(){
    DrawGraph( 0, 0, img, TRUE );
}


紫電
記事: 14
登録日時: 13年前

Re: エラーが出て画像が表示されない

#6

投稿記事 by 紫電 » 13年前

もう一度エラー内容を教えていただけませんか?
もしかしたら微妙に変わっているかもしれないんでw

chilt

Re: エラーが出て画像が表示されない

#7

投稿記事 by chilt » 13年前

DrawGraph( 0, 0, img, TRUE );の場合下のエラーが増えました。
(8) : error C2664: 'DxLib::DrawGraph' : 3 番目の引数を 'void (__cdecl *)(void)' から 'int' に変換できません。(新しい機能 ; ヘルプを参照)

DrawGraph( 0, 0, img2, TRUE );の場合同じエラーです。

box
記事: 2002
登録日時: 14年前

Re: エラーが出て画像が表示されない

#8

投稿記事 by box » 13年前

紫電 さんが書きました:こうしてみてはどうでしょうか。
そのコードが正しくなさそうなので、質問者さんは混乱されているかもしれません。
紫電 さんが書きました:

コード:

int img2;
img2 = LoadGraph( "../dat/img/menu/menu.png" );
void img(){
    DrawGraph( 0, 0, img, TRUE );
}
変数名をimg2にしたのであれば、
DrawGraph()の第3引数もimg2にしないとまずいですよね?私は詳しくありませんけれど。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: エラーが出て画像が表示されない

#9

投稿記事 by softya(ソフト屋) » 13年前

そもそも関数外に代入文があるのが大問題だと思いますけど。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

紫電
記事: 14
登録日時: 13年前

Re: エラーが出て画像が表示されない

#10

投稿記事 by 紫電 » 13年前

box さんが書きました:
紫電 さんが書きました:こうしてみてはどうでしょうか。
そのコードが正しくなさそうなので、質問者さんは混乱されているかもしれません。
紫電 さんが書きました:

コード:

int img2;
img2 = LoadGraph( "../dat/img/menu/menu.png" );
void img(){
    DrawGraph( 0, 0, img, TRUE );
}
変数名をimg2にしたのであれば、
DrawGraph()の第3引数もimg2にしないとまずいですよね?私は詳しくありませんけれど。

ああ、そうでしたww

DrawGraph( 0, 0, img2, TRUE );

ってかんじですねw

chilt

Re: エラーが出て画像が表示されない

#11

投稿記事 by chilt » 13年前

関数内に書いたら正常に動作しました。
ありがとうございます。

box
記事: 2002
登録日時: 14年前

Re: エラーが出て画像が表示されない

#12

投稿記事 by box » 13年前

softya(ソフト屋) さんが書きました:そもそも関数外に代入文があるのが大問題だと思いますけど。
そりゃそうですね。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: エラーが出て画像が表示されない

#13

投稿記事 by softya(ソフト屋) » 13年前

それとLoadGraph()とDrawGraph()を同じ関数内に書くとメモリリークを起こします。
徐々にメモリ消費量が増えていき、やがてDXライブラリの管理個数の限界を超えて画像が消えます。
「ゲームプログラミングの館」のあちこちに書いてあると思いますが読み込みと表示の関数は必ず分けるようにして下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

紫電
記事: 14
登録日時: 13年前

Re: エラーが出て画像が表示されない

#14

投稿記事 by 紫電 » 13年前

softya(ソフト屋) さんが書きました:それとLoadGraph()とDrawGraph()を同じ関数内に書くとメモリリークを起こします。
徐々にメモリ消費量が増えていき、やがてDXライブラリの管理個数の限界を超えて画像が消えます。
「ゲームプログラミングの館」のあちこちに書いてあると思いますが読み込みと表示の関数は必ず分けるようにして下さい。

そうなんだw

勉強になりましたw

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: エラーが出て画像が表示されない

#15

投稿記事 by softya(ソフト屋) » 13年前

紫電 さんが書きました:
softya(ソフト屋) さんが書きました:それとLoadGraph()とDrawGraph()を同じ関数内に書くとメモリリークを起こします。
徐々にメモリ消費量が増えていき、やがてDXライブラリの管理個数の限界を超えて画像が消えます。
「ゲームプログラミングの館」のあちこちに書いてあると思いますが読み込みと表示の関数は必ず分けるようにして下さい。

そうなんだw

勉強になりましたw
より正確に書くとLoadGraph()した画像はDXライブラリの管理ハンドルを1つ消費してDeleteGraph()や画面モードを切り替えない限りメモリ内に常駐します。
だから、いつでもDrawGraph()で表示できるのですが、もしこのプログラムのように毎回呼び出す関数img()の中にimg2 = LoadGraph( "../dat/img/menu/menu.png" );があるとimg2;に毎回新しい画像ハンドルが設定されます。
これだと前の画像ハンドルは見かけ上は消えたように見えますが、DXライブラリ内には前の画像ハンドル・画像データは残ったままなので秒間60個づつ画像ハンドルとメモリを消費して行くことになります。
まぁ、毎回ファイルを読み込むので遅いですし、30KB程度の画像だとしても1分も立たない内に30KBx60フレームx60秒=約100MBを消費します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る