トップページ > 過去ログ > 記事閲覧
原因がわかりません
名前:サルア 日時: 2008/12/27 20:22

環境 Visual Studio 2005 Windows XP Home Edition ------ すべてのリビルド開始: プロジェクト: DxLib_VC2005用, 構成: Debug Win32 ------ プロジェクト 'DxLib_VC2005用'、構成 'Debug|Win32' の中間出力ファイルを削除しています。 コンパイルしています... Title.cpp c:\program files\microsoft platform sdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 jiki.cpp c:\program files\microsoft platform sdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 graph.cpp c:\program files\microsoft platform sdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 main.cpp c:\program files\microsoft platform sdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 コードを生成中... マニフェストをリソースにコンパイルしています... リンクしています... graph.obj : error LNK2005: "struct wkdata Wk" (?Wk@@3Uwkdata@@A) は既に Title.obj で定義されています。 graph.obj : error LNK2005: "int atai" (?atai@@3HA) は既に Title.obj で定義されています。 graph.obj : error LNK2005: "struct atai jiki" (?jiki@@3Uatai@@A) は既に jiki.obj で定義されています。 graph.obj : error LNK2005: "int i" (?i@@3HA) は既に jiki.obj で定義されています。 graph.obj : error LNK2005: "struct TitleData start" (?start@@3UTitleData@@A) は既に Title.obj で定義されています。 graph.obj : error LNK2005: "struct jiki_shot jshot" (?jshot@@3Ujiki_shot@@A) は既に jiki.obj で定義されています。 graph.obj : error LNK2005: "struct TitleData end" (?end@@3UTitleData@@A) は既に Title.obj で定義されています。 graph.obj : error LNK2005: "struct TitleData option" (?option@@3UTitleData@@A) は既に Title.obj で定義されています。 graph.obj : error LNK2005: "struct TitleData point" (?point@@3UTitleData@@A) は既に Title.obj で定義されています。 graph.obj : error LNK2005: "struct TitleData title" (?title@@3UTitleData@@A) は既に Title.obj で定義されています。 main.obj : error LNK2005: "struct wkdata Wk" (?Wk@@3Uwkdata@@A) は既に Title.obj で定義されています。 main.obj : error LNK2005: "int atai" (?atai@@3HA) は既に Title.obj で定義されています。 main.obj : error LNK2005: "struct TitleData start" (?start@@3UTitleData@@A) は既に Title.obj で定義されています。 main.obj : error LNK2005: "struct TitleData end" (?end@@3UTitleData@@A) は既に Title.obj で定義されています。 main.obj : error LNK2005: "struct TitleData option" (?option@@3UTitleData@@A) は既に Title.obj で定義されています。 main.obj : error LNK2005: "struct TitleData point" (?point@@3UTitleData@@A) は既に Title.obj で定義されています。 main.obj : error LNK2005: "struct TitleData title" (?title@@3UTitleData@@A) は既に Title.obj で定義されています。 C:\DxLib_VC\sanpuru\Debug\DxLib_VC2005用.exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。 ビルドログは "file://c:\DxLib_VC\sanpuru\Debug\BuildLog.htm" に保存されました。 DxLib_VC2005用 - エラー 18、警告 4 ========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ========== と出てしまって 色々と調べたのですが原因がわからず質問させていただきました。 設定が間違ってるのかと思いサンプルゲーム、ポンのプログラムをダウンロードして実行してみたところ ------ ビルド開始: プロジェクト: pon, 構成: Debug Win32 ------ コンパイルしています... ST_Char_Score.cpp c:\program files\microsoft platform sdk\include\mmreg.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。 c:\documents and settings\owner\デスクトップ\pon_project\st_char_score.cpp(39) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ブラウザ情報ファイルを作成しています... Microsoft Browse Information Maintenance Utility Version 8.00.50727 Copyright (C) Microsoft Corporation. All rights reserved. ビルドログは "file://c:\Documents and Settings\Owner\デスクトップ\pon_Project\Debug\BuildLog.htm" に保存されました。 pon - エラー 1、警告 1 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== これはやはり自分の設定がおかしいのでしょうか?

Page: 1 |

Re: 原因がわかりません ( No.1 )
名前:キーチック 日時:2008/12/28 04:56

mmreg.hに関してUNICODE形式で保存してくださいと出るのはデフォです. 気にしなくても大丈夫ですが,気になる場合には,テキストエディタなどでmmreg.hを 直接開いてから,UNICODE形式で保存しなおせば,そのwarningは出なくなります.
Re: 原因がわかりません ( No.2 )
名前:サルア 日時:2008/12/28 14:47

>>キーチックさん そうでしたか やはり無視してもいいのですね・・・ あと上のerror LNK2005はどうすればいいのでしょうか? 調べても設定どうこうというものしか見つからず。 書いてある設定になっていて改善策がわかりません サンプルプログラムのポンは出来上がってるものですよね? だとしたら、自分の設定がやはりおかしいのでしょうか?
Re: 原因がわかりません ( No.3 )
名前:キーチック 日時:2008/12/29 04:25

ポンは私も初めて見ましたが,どうやらVC++6.0で作成されたサンプルのようです. VC++も2005になりますと,セキュリティ関係で機能追加されたりして, 結構厳密にあれこれ言ってきますので,私の環境でもそのままではerror続出でした. その点から考慮して,サルアさんの環境設定がおかしいとは言い切れないと思います. また先のmmreg.hは一回Unicode形式で保存しなおしてしまえば, 以後すべてのプログラムに共通して出なくなりますので, 無視していてもいいのですが,やっておくと一々いらいらすることはなくなります.
Re: 原因がわかりません ( No.4 )
名前:管理人 日時:2009/01/02 08:37

ご報告ありがとうございます ポンのプログラムを VisualC++ 2005 でコンパイルすると発生するエラーは修正しておきました 本題のサルアさんのプログラムで発生しているエラーですが、エラー文の通り int atai や int i が graph.cpp と jiki.cpp どちらでも定義されている、等の多重定義エラーです もしかするとヘッダファイルに extern を付けないで実体を定義してしまっているのではないでしょうか? ------------------ エラーが発生する例 ------------------ hedder.h =============== int i ; int atai ; int tashizan( int a, int b ) ; ======================== main.cpp =============== #include <stdio.h> #include "hedder.h" // ←ここで i, atai の実体が定義される void main( void ) { printf( "%d", tashizan( 10, 20 ) ; } ======================== sub.cpp ================ #include "hedder.h" // ←ここでも i, atai の実体が定義されてしまう、エラー int tashizan( int a, int b ) { return a + b ; } ======================== ------------------ エラーが発生しない例 ------------------ hedder.h =============== extern int i ; // ← extern を付けて「どこかに実体があるから使うよ」という指定にしておく extern int atai ; // ← extern を付けて「どこかに実体があるから使うよ」という指定にしておく int tashizan( int a, int b ) ; ======================== main.cpp =============== #include <stdio.h> #include "hedder.h" int i ; // ← 実体( extern をつけない )はここで定義しておく int atai ; // ← 実体( extern をつけない )はここで定義しておく void main( void ) { printf( "%d", tashizan( 10, 20 ) ; } ======================== sub.cpp ================ #include "hedder.h" int tashizan( int a, int b ) { return a + b ; } ========================
Re: 原因がわかりません ( No.5 )
名前:サルア 日時:2009/01/04 22:53

>>キーチックさん やはりエラーでましたか Unicode形式で保存して出なくなりました >>管理人さん 重複する際externをつけなければならないんですね。 ありがとうございます。 ついでというのもなんですが Game_main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl enemy(void)" (?enemy@@YAXXZ) が関数 "void __cdecl Game(void)" (?Game@@YAXXZ) で参照されました。 Game_main.obj : error LNK2019: 未解決の外部シンボル "void __cdecl Jshot(void)" (?Jshot@@YAXXZ) が関数 "void __cdecl Game(void)" (?Game@@YAXXZ) で参照されました。 C:\DxLib_VC\sanpuru\Debug\DxLib_VC2005用.exe : fatal error LNK1120: 外部参照 2 が未解決です。 これもexternみたいにつける命令あるんでしょうか?
Re: 原因がわかりません ( No.6 )
名前: 日時:2009/01/05 10:34

>ついでというのもなんですが Gameという関数の中で、実体の無い関数 enemy関数とJshot関数が使用されたという エラーです。 「実体の無い関数」とは、 ヘッダなどで void Jshot(); などと「宣言」はされているけれど void Jshot() { int flag = 0; } などと関数の処理がかかれた、 「定義」が無い物のことを言います。

Page: 1 |