ページ 11

40個のエラー

Posted: 2009年6月01日(月) 00:35
by ぬかづけ
自分は今、Vsiual C++でDXライブラリを使って
ここのシューティングゲーム館の講座を見ながら
シューティングゲームを作っていたのですが、
40ものエラーと2つの警告がでて困っています。

投稿時にエラーが出てしまいますので、ソースとエラーを分けて投稿します。
ソースは以下の通りです。
#include "DxLib.h"

int    counter=0;
int    color_white;
char   Key[256];

//画像ファイルハンドル
int img_background;
int img_player;

//構造体
typedef struct{
        double x,y;
        int status,counter;
        int shot [11][15];
} BODY_player_t;

BODY_player_t Player;


void img_sound_load(){
    img_background = LoadGraph("試作地面.bmp");
    img_player = LoadGraph("kame_usiro.bmp");
}

void initialization(){
    Player.x=200.0;
    Player.y=400.0;
    Player.counter=0;
    Player.status=0;
}                                         //構造体の初期化

void SetColor(){
    color_white = GetColor(255,255,255);       //白色ハンドルを取得
}

void Background(){
    DrawGraph(0,0,img_background,FALSE);    //背景を描画
}

void PlayerControl(){
    DrawGraph((int)Player.x,(int)Player.y,img_player,TRUE);//プレイヤーを描画
}


void FpsTimeFanction(){
        static int FpsTime[2]={0,},FpsTime_i=0;
        static double Fps=0.0;

        if(FpsTime_i== 0)
                FpsTime[0]=GetNowCount();                           //1周目の時間取得
        if(FpsTime_i==49){
                FpsTime[1]=GetNowCount();                           //50周目の時間取得
                Fps = 1000.0f / ((FpsTime[1] - FpsTime[0]) / 50.0f);//測定した値からfpsを計算
                FpsTime_i=0;
        }
        else
                FpsTime_i++;                                          //現在何周目かカウント
        if(Fps != 0)
                DrawFormatString(565,460,color_white,"FPS %.1f",Fps); //fpsを表示
        return;
}

int WINAPI WinMain( HINSTANCE hInstance, 
                                   HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
        int RefreshTime=0;

        ChangeWindowMode( TRUE ) ;
        if( DxLib_Init() == -1 ) return -1; 

        SetDrawScreen( DX_SCREEN_BACK ) ;                 //裏画面を使用する。

        img_sound_load();                                 //画像ファイルをロード
        initialization();                                 //初期化
        SetColor();                                       //色を取得

        while(ProcessMessage() == 0 && GetHitKeyStateAll(Key) == 0){
                RefreshTime = GetNowCount();              //今の時間を取得
                ClearDrawScreen();                        //裏画面のデータを全て削除

                Background();                             //背景描画 

                PlayerControl();                          //プレイヤー描画

                FpsTimeFanction();                        //FPS計算

                ScreenFlip() ;                            //裏画面データを表画面へ反映

                counter++;

                if(Key[KEY_INPUT_ESCAPE]==1)    break;    //Escapeが押されたら終了
                while(GetNowCount() - RefreshTime < 17);  //1周の処理が17ミリ秒になるまで待つ
        }
                
        DxLib_End() ;
        return 0 ;
}

続40個のエラー

Posted: 2009年6月01日(月) 00:36
by ぬかづけ
引き続きエラーと警告です。



<エラー>
error LNK2005: __CrtSetCheckCount は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __cexit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __amsg_exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __initterm_e は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: _fflush は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __crt_debugger_hook は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __invoke_watson は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __configthreadlocale は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __encode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __decode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: _sprintf は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: ___xi_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
error LNK2005: ___xi_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
error LNK2005: ___xc_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
error LNK2005: ___xc_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __XcptFilter は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __lock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __unlock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: _vsprintf は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: ___set_app_type は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: __CrtDbgReportW は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: "public: void __thiscall type_info::_type_info_dtor_internal_method(void)" (?_type_info_dtor_internal_method@type_info@@QAEXXZ) は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) は既に MSVCRTD.lib(ti_inst.obj) で定義されています。
error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) は既に MSVCRTD.lib(ti_inst.obj) で定義されています。
error LNK2005: _getenv は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2005: _abort は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
error LNK2019: 未解決の外部シンボル _jtransform_execute_transformation が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _jcopy_markers_execute が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _jtransform_adjust_parameters が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _jtransform_request_workspace が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _jcopy_markers_setup が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _write_stdout が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _read_stdin が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _read_scan_script が関数 _parse_switches で参照されました。
error LNK2019: 未解決の外部シンボル _keymatch が関数 _parse_switches で参照されました。
fatal error LNK1120: 外部参照 9 が未解決です。



<警告>
warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
warning LNK4098: defaultlib 'LIBCMTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。


自分はほぼ初心者で、大学のサークルの先輩に聞いてみても分からないと言われてしまいました。
どうやったらエラーが消えるのでしょうか?

※追記
質問文に足らない情報がありましたら、ご指摘お願いします。

Re:続40個のエラー

Posted: 2009年6月01日(月) 00:42
by 御津凪
エラー・警告双方とも、プロジェクトの ランタイム ライブラリ の設定が正しくないため発生しています。

DXライブラリの使い方の説明のページで、プロジェクトの設定の項目を見直してください。

Re:続40個のエラー

Posted: 2009年6月01日(月) 22:37
by ぬかづけ
別のDXライブラリを使ったプログラムは動くので
設定はあってると思うのですが…。

Re:続40個のエラー

Posted: 2009年6月01日(月) 23:50
by 御津凪
プロジェクトのプロパティで、
C/C++ → コード生成 にある、ランタイム ライブラリの項目がきちんと設定されているでしょうか?

デバッグ版(Debug)では 「マルチスレッド デバッグ (/MTd)」、
リリース版(Release)では 「マルチスレッド (/MT)」

に、なっていなければなりません。

Re:続40個のエラー

Posted: 2009年6月02日(火) 05:53
by toyo
>設定はあってると思うのですが…。
新しくプログラムを作るごとに設定が必要です

Re:続40個のエラー

Posted: 2009年6月02日(火) 21:50
by むかづけ
確認してみたら、プロジェクトの設定が間違ってたようです。
正常に動作しました。
ありがとうございます。
お手数を掛けてすいませんでした。