シューティングゲームの館で・・・
Posted: 2008年4月05日(土) 22:52
こんばんは、初投稿です。
いきなりすみませんが不思議に思ったことがあるので質問させてもらいます。
まず、自分の環境ですが、
OS:VISTA
開発環境:BCC Developer(VC++はなぜか動かないので・・)
独学でCを勉強していて、ポインタと構造体を大体理解することはできました。
そこで、コンソールアプリに飽きてしまって^^;ゲームを作ろうと思いこのページを見て勉強していました。
それで、シューティングゲームの館を見ていて、例を使ってみていたところ、
(8)「ショットを打つ」 で、
/* main.cpp */
#include "DxLib.h"
#include "GlobalVariable.h"
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
extern void img_sound_load();
extern void initialization();
extern void SetColor();
extern void Background();
extern void PlayerShotCalc();
extern void PlayerShotDisp();
extern void PlayerControl();
extern void EnemyControl();
extern void EnemyCalcDisp();
extern void EnemyShotControl();
extern void EnemyShotCalcDisp();
extern void CollisionDetection();
extern void Background2();
extern void FpsTimeFanction();
int RefreshTime=0;
// ChangeWindowMode( TRUE ) ;
if( DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK ) ; //裏画面を使用する。
のように打ったところ、メイク(デバッグ)時に、
Error: 外部シンボル '_img_sound_load' が未解決(C:\WORK\BCC\MAIN\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_initialization' が未解決(C:\WORK\BCC\MAIN\DEBUG\MAIN.OBJ が参照)
(これがFpsTimeFantion();まで続きます)
となってしまいます。
そこで、extern宣言をすべてヘッダファイルに移したらどうなるかな?? と思い
GlobalVariable.hのほうに移してみたところ、正常に動きました。
ちゃんと動いたのでよかったのですが、原因が気になったので質問しました。
どなたかわかる方、教えてください。
長文ですみませんでした。
いきなりすみませんが不思議に思ったことがあるので質問させてもらいます。
まず、自分の環境ですが、
OS:VISTA
開発環境:BCC Developer(VC++はなぜか動かないので・・)
独学でCを勉強していて、ポインタと構造体を大体理解することはできました。
そこで、コンソールアプリに飽きてしまって^^;ゲームを作ろうと思いこのページを見て勉強していました。
それで、シューティングゲームの館を見ていて、例を使ってみていたところ、
(8)「ショットを打つ」 で、
/* main.cpp */
#include "DxLib.h"
#include "GlobalVariable.h"
int WINAPI WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
extern void img_sound_load();
extern void initialization();
extern void SetColor();
extern void Background();
extern void PlayerShotCalc();
extern void PlayerShotDisp();
extern void PlayerControl();
extern void EnemyControl();
extern void EnemyCalcDisp();
extern void EnemyShotControl();
extern void EnemyShotCalcDisp();
extern void CollisionDetection();
extern void Background2();
extern void FpsTimeFanction();
int RefreshTime=0;
// ChangeWindowMode( TRUE ) ;
if( DxLib_Init() == -1 ) return -1;
SetDrawScreen( DX_SCREEN_BACK ) ; //裏画面を使用する。
のように打ったところ、メイク(デバッグ)時に、
Error: 外部シンボル '_img_sound_load' が未解決(C:\WORK\BCC\MAIN\DEBUG\MAIN.OBJ が参照)
Error: 外部シンボル '_initialization' が未解決(C:\WORK\BCC\MAIN\DEBUG\MAIN.OBJ が参照)
(これがFpsTimeFantion();まで続きます)
となってしまいます。
そこで、extern宣言をすべてヘッダファイルに移したらどうなるかな?? と思い
GlobalVariable.hのほうに移してみたところ、正常に動きました。
ちゃんと動いたのでよかったのですが、原因が気になったので質問しました。
どなたかわかる方、教えてください。
長文ですみませんでした。