[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/28 14:30 / Filesize : 293 KB / Number-of Response : 980
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++でFCのドラクエっぽいRPGを作る



1 名前:名前は開発中のものです。 [2007/11/02(金) 01:53:08 ID:M/fkomaJ]
C++の勉強をかねてFCのドラクエっぽい感じのRPGを作りたいんです。

しょっぱなからつまずいています、知恵を貸してください。

<<使用しているもの>>
BorlandC++
DXライブラリ
ドラクエフォント


DXライブラリはここ
ttp://homepage2.nifty.com/natupaji/DxLib/index.html

ドラクエフォントはここ
ttp://slime4.hp.infoseek.co.jp/font/font.html






422 名前:名前は開発中のものです。 mailto:sage [2008/01/24(木) 00:53:39 ID:yYzSvo3e]
>>416
わかりました。あなたは世界を革命するしかないでしょう。



423 名前: [2008/01/24(木) 21:41:55 ID:j3/D/798]
アク禁につき携帯から…

>>420
吹いたw

空気読まずに最新版投下。
******************************
ルーラが使用可能になりました。
イベントフラグを実装しました。
とびらを実装しました。
各マップオブジェクトに存在フラグを設定できるようになりました。
アリアハンを拡張しました。

tp://sakuratan.ddo.jp/uploader/source/date67764.lzh


424 名前: [2008/01/25(金) 14:01:19 ID:UVi0ePn3]
すみません、最新版アリアハン歩けませんでした。
metaMap.csvに嘘コメントが乗ってます。
家に帰ったら修正版うぷしますが、とりあえず。

× 画像ファイル名 昼 夜 通行可否
○ 画像ファイル名 通行可否 昼 夜

425 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 07:51:23 ID:6ZDIHq1v]
>>423
戦闘の文字の送り方のタイミングとかドラクエっぽくなっているな。

アリアハンに入ると右側に動けない。
左側に動いて城から出ることは出来る。

426 名前: [2008/01/26(土) 09:15:46 ID:3u97CoxS]
いろいろ手をつけてたら、まともにアップできる状態じゃなくなってしまった… Orz
とりあえず、>>423でうpしたやつをアリアハンが歩けるようにしてうpしておきます。

tp://sakuratan.ddo.jp/uploader/source/date67926.lzh

427 名前: [2008/01/26(土) 10:36:56 ID:3u97CoxS]
平行してエディター部分も作り始めました。
WinAPIで作ってます。
C++っぽくウィンドウをクラス化しようと思って、
WNDCLASS構造体を継承したWndクラスを作りました。
WNDCLASS::lpfnWndProcにメンバ関数Wnd::WndProcのポインタを渡したいんですが

'long (__stdcall Wnd::*)(HWND__ *,unsigned int,unsigned int,long)' 型は
'long (__stdcall *)(HWND__ *,unsigned int,unsigned int,long)' 型に変換できない(関数
Wnd::Wnd() )

というコンパイルエラーがでます。
相変わらずBCCでやってます。

ソースは
tp://sakuratan.ddo.jp/uploader/source/date67927.txt
です。
ボスケテ Orz


428 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 10:52:11 ID:H+OG9eM0]
HellowWorldの次がこれって絶対冗談だろ?w

429 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 12:32:09 ID:pcXY3xH1]
MetaCmd クラスを見ると
bool に int を代入してたり、
bool型を返却するメソッドなのに、intを返却してるケースが有るが、
>>1 の環境ではワーニングも何も出ないんか?

あと、VC++2005だけかもしれんけど、
hakase.h の small関数でエラー出まくる
どうやら、platform sdk側 の rpcndr.h で
#define small char
とか ぶっこいちゃってるのが原因みたい

430 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 13:29:52 ID:pcXY3xH1]
うちは VC++2005 しか無いんだけど、
動くようになるまでに色々とイジる必要がありますな
なんつーか、本来なら警告が出る部分が目立つから
いまのうちに潰しとかないと危ないなぁ

>>427
& は要らなくね?



431 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 13:30:25 ID:n87t9W9f]
>>427
www.m--takahashi.com/bbs/pastlog/04500/04419.html
↑ここ読め


432 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 13:49:11 ID:n87t9W9f]
つか1はとても初心者とは思えんな
C++の知識は確かに貧弱だけどCかもしくは別言語はやってたんだろ

まあ、がんばってくれ
俺もゲーム作ってるからソースは参考にさせてもらうよ

433 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 15:37:30 ID:qYaFn144]
c用の構造体は継承しちゃダメだよ
publicになっちゃうし…

434 名前:名前は開発中のものです。 [2008/01/26(土) 18:12:33 ID:e3cqRtGD]
small関数は別の名前に変えて欲しいところではある。

435 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 19:33:43 ID:dThAsdf4]
MFCやWTLのCRectとかふつーにRECT派生してるよ。
まーそもそもAPIの薄いラッパーなんだが。

436 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 21:17:54 ID:qYaFn144]
>>435
で?
CRectと同じように自由に中身いじれていいと?
どう考えてもhas関係のほうがいいだろ

437 名前:名前は開発中のものです。 mailto:sage [2008/01/26(土) 22:39:29 ID:dThAsdf4]
用途によると

438 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 03:49:56 ID:rwExEoOD]
>>437
>>427を読んでもまだ言うかww

439 名前:名前は開発中のものです。 [2008/01/27(日) 14:29:06 ID:T94kIYTo]
>>1は当然リファクタリング中なんだよな?
こんな状態で新機能つけられても失笑をかうだけだぞ

440 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 14:35:04 ID:2lUOmqYr]
リファクタリングなんか実装終わってからやればいいじゃんか




441 名前:名前は開発中のものです。 mailto:sage [2008/01/27(日) 17:26:00 ID:bil4rrw2]
1は明らかに本業

442 名前: [2008/01/28(月) 09:42:14 ID:efejqwIm]
>>429
実は、警告が一切でません。

たとえば
×
bool test(int a){
retun a;
}


bool test(int a){
if(a){return true;
}else{retun false;}
}

とやらないと警告がでるってことですか?
それとも他の問題?

あとsmall関数に関してはreturnSmall関数に名前を変えます。
衝突しやすい名前は避けるべきでしたね。すみませんでした。

>>431
まさしく僕の状況と同じですね、ありがとうございます。
参考にしてやってみます。

アクセス権についてはprotectedにすれば大丈夫?
でも、最悪publicになっても仕方ないと思うことにします。

443 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 11:51:19 ID:Fsa5EfdA]
>>442
まあ、普通はboolをintに変換すると警告が出る。
C言語ではしょうがないが、intとboolは本来違う型だから。
BCCでは警告出ないのか……。
BCCは警告がVC++より多く出るのでデバッグしやすいと思っていたのだが。
最近のVC++が賢くなったのかも知れん。

ちなみに、このソースなら
bool test(int a)
{
  return a != 0;
}
とやったほうがいいぞ。
Javaだとifにはbool型しか書けないから、このようにする必要がある。

アクセス権は正直難しいな。
無理やりprivateにしても、アクセサを作るのは面倒だし。
最小限の関数がアクセスできるように設定するのが理想。
継承してオーバーライドしたメンバ関数が参照する変数ならprotected。
そうでなければprivateが正解。
publicは構造体専用のような気がする。構造体のような基本クラスならあり。

444 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 12:17:32 ID:DJpHQP7Z]
int から bool への変換で警告はないだろ。
0が偽で非0が真なんだから、警告の出しようがない気がするが。
VC++ が過剰なだけでは?

return a != 0;
としたほうが良いってのは同意だけど。でも Java は別に関係ないな。

445 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 18:46:30 ID:DSI82zKh]
コンパイラだけ見ればVCのほうが標準準拠度がまし

446 名前:名前は開発中のものです。 mailto:sage [2008/01/28(月) 22:03:00 ID:qDZhZR+9]
intをboolに変換したらintに再変換できない。
情報が失われているから警告出してもよさそうなのだが。
しかし手元のg++でコンパイルしてみたが警告出ないな。

447 名前:名前は開発中のものです。 mailto:sage [2008/01/29(火) 01:30:19 ID:M4FlFQH0]
世界ランク14位おめw
2chcity.myminicity.com/

ランク   国名      街             人口  (前日比)  前日
--- 1   US1      LUELand         326354 (+211)   326143
--- 2   US2      GoonTown        179482 (+711)   .178771
--- 3   Germany1  .isnichwahr.de       119091 (-654)   119745
--- 4   US3      CreateMyCity Forum  .87380  (+1982)   85398
--- 5   Poland1    #debian.pl         79594  (+1043)   .78551
--- 6   Germany2  upOTia             52443  (+399)    52044
--- 7   France1    Reze'Les Nantes     .41960  (+246)    41714
--- 8   Canada1   J-C Satanas & CO   .40995  (+721)    40274
--- 9   US4      retromundi        .40604  (+788)    39816
--- 10  France2    FanaZ           .39902  .(+1268)   38634
2↑ 11  Germany3   deluxebits         38770  .(+3199)   35571
1↓ 12  US5      .isnichwahr.at        .38234  (+78)    38143
1↓ 13  France3    gravure-news       .37204  .(+765)    36439
2↑ 14  Japan1     2ch_city          35637  .(+1970)   33667
1↓ 15  Spain1     Media-Vida         .35205  .(+686)    34519
1↓ 16  France4    Sguy            .35083  .(+1456)   33626
2↓ 17  Ireland1    .prapikilty          .35067  .(+871)    34196
--- 18  Spain2     benidaver         .34505  .(+914)    33591
--- 19  Germany4   directupload       ..32490  .(+82)    .32408
-↑ 20  Slovakia1    Legionar City       32056

448 名前: [2008/01/29(火) 10:11:54 ID:owOBTCKE]
>>349
今中途半端に新機能付けてる所なので、一段落したらリファクタリングしようと思ってます。
VCに移行する事も考えてます。
せっかく見てくれる人がいるんだから、殆ど使われてないBCCよりアドバイスも受けやすそうだし。

はやくアク禁とけないかなぁ…

449 名前: [2008/01/31(木) 08:17:54 ID:gs4vtOjg]
VC++ 2005をインスコして、コンパイルしてみたものの
吐き出されたエラーの量に愕然…。
しかも見たことないエラーだから対処法がわかんないOrz

とりあえず、このプロジェクトは最後までBCCで行ったほうがよさそうだ。
VCは次のプロジェクトでつかってみることにするよ。
いや、エディター部分で使ってみるか。

**************************************
人と物の区別をつけました。
町の中の入り口に立ってるのが【人】です。

tp://sakuratan.ddo.jp/uploader/source/date68697.lzh


450 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 09:09:52 ID:KWbgYovb]
>>449
VC++2005っていうのはExpressEditionか?
それならWin32 SDKをインストールする必要があるぞ。

もし違うのなら、ユニコード関連のエラーじゃなかったか?
俺も最初そこではまったぞ。
VC++2005以降ではデフォルトのプロジェクト設定は
ユニコード関数になってる(当然98/Meでは実行不可)。

多分今まではANSIライブラリで開発していただろうから、
プロジェクトー>プロパティー>構成プロパティ
ー>全般ー>プロジェクトの規定値ー>文字セット
を「マルチバイト文字セットを利用する」と設定してみたらどうだ。
関数でセキュリティ警告がでたらググって消すといい
(あまり良い対処法ではないが)。
意外とVC++も面倒なんだよな。
インテリセンスは便利なんだが、そっちはVC#のほうが進化してるし。



451 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 10:33:31 ID:g4vS4NUg]
windowsのAPI直接呼んでなければplatformSDKは不要
>>1のソース見てないから使ってるかは知らんが…

452 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 10:43:18 ID:9v/0NHUq]
>>451
Dx_Lib使ってるなら必要だったような希ガス

453 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 13:05:33 ID:g4vS4NUg]
>>452
それはおかしい
DX_libがWinAPI用のlibファイルとリンクしてないことになる
バイナリで提供されているということは、WinAPI用のlibはリンク済みなはず

454 名前:名前は開発中のものです。 [2008/01/31(木) 14:16:08 ID:a5CfO9IL]
DXLIB配布元の説明くらい読め
PlatformSDKは必須

455 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 15:42:20 ID:ZxMw62D0]
必須て・・・
dll版も配布されているので可能だけど

456 名前:名前は開発中のものです。 [2008/01/31(木) 15:53:29 ID:a5CfO9IL]
ライブラリ群の話しじゃないよ
ヘッダはどうすんのよ
windows.hとか最初に読んでるし

まさかBCCの使えとか言ってる?

457 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 15:57:23 ID:ZxMw62D0]
>>456
つれたwww
ライブラリ側のビルド時に依存してるだけだから、コメントアウトして問題ない。

implibとかdumpbin等等の細かいツールいくつかと、元のdxlib.hを加工すればいける
dll作成経験が恐らく無い>>1には大変かもね

458 名前:名前は開発中のものです。 [2008/01/31(木) 16:02:19 ID:a5CfO9IL]
加工かよ
じゃあ
WIN32ライブラリリンクしてるとこも加工な
がんばってくれww

459 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 16:03:26 ID:ZxMw62D0]
>WIN32ライブラリリンクしてるとこも加工な
お前本当にDLL作ったことないのな・・・

単体のexeとほぼ同じ構造になってる
この意味がわかるか?

460 名前:名前は開発中のものです。 [2008/01/31(木) 16:20:07 ID:a5CfO9IL]
よく読め
俺はお前の言った
ヘッダの修正の話しをしている

それからdll版ってなんだ?
悪いが見たこともない
win32リンクされてるdll版でも配布されてんの?



461 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 16:26:06 ID:ZxMw62D0]
>よく読め
>俺はお前の言った
>ヘッダの修正の話しをしている
やっぱりお前わかってないってdll作ったこと無いなら素直に質問すればいい

>それからdll版ってなんだ?
C#版アーカイブに入っている。
C#で開発する際には、同梱の.NETのクラスライブラリを使ってアクセスするというだけなので、
dxlib.dll自身はネイティブ。

462 名前:名前は開発中のものです。 [2008/01/31(木) 16:36:15 ID:a5CfO9IL]
お?
あった

納得
つかC#かよ!!
というツッコミは辞めておく

勉強になったわ
サンキュー

463 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 17:58:32 ID:ad/sWf4T]
>つかC#かよ!!
>というツッコミは辞めておく

いや、そこはつっこめよw

464 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 18:17:56 ID:ZxMw62D0]
>463
>C#で開発する際には、同梱の.NETのクラスライブラリを使ってアクセスするというだけなので、
>dxlib.dll自身はネイティブ。

465 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 18:51:00 ID:ad/sWf4T]
1の開発環境はC#なのか?w


466 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 18:54:57 ID:ZxMw62D0]
>>465
だから、dxlib.dllはネイティブだと何度(ry

467 名前:名前は開発中のものです。 mailto:sage [2008/01/31(木) 22:23:51 ID:Qxg+Khni]
>>452-466
お前らかっこ悪りぃwwww

468 名前:名前は開発中のものです。 mailto:sage [2008/02/01(金) 19:01:44 ID:eYKdS8Iu]
2008EEならPSDK付いてるだろ
同じ無料だし軽くなってるし

469 名前:名前は開発中のものです。 mailto:sage [2008/02/01(金) 19:19:54 ID:tyk5s2hE]
俺が初めにやったのはlibがRelease用なのにdebugでビルドしようとしたミスだ。

470 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 09:02:14 ID:IBv7+ZuZ]
>>449
>吐き出されたエラーの量に愕然…。
>しかも見たことないエラーだから対処法がわかんないOrz

たぶん次プロジェクトで使おうとしても同じ部分でつまづくから
開発の合間に少しずつでいいから解決してみれ
オレもこれを VC++2005 でビルドできるようにするまでに
色々な部分をイジったから
分かんねーことがあったら全部ここで聞いてみー

あと、VC++2005 がアホだからかもしれんけど
BattleCommands クラスの giveControl メソッド内に
goto Spell;
があるんだが、Useable.h の Spellクラスと混同されてるみたいで
エラーになっている

Field.cpp の380行目で
構文エラー : ';' が '}' の前にありません
とか出てくるけど、
それ以前に Field クラスの iventProcess メソッドは
近いうちに何とかしといた方が良さそうだな



471 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 14:00:18 ID:O0xDaWr+]
gotoのラベルは全て大文字が基本だね
エラー処理以外で使うべきではないが…

472 名前:名前は開発中のものです。 [2008/02/02(土) 17:38:17 ID:I9mkDQj0]
4819と4996の警告を無視するようにオプション付けると少し幸せになるかもしれん。

VC++コンパイラが文字コードを知らないバグはゲイツも認識しているらしいが修正は次期リリースを待て、
とのことだったような気がしたが、ソースは無い。

というわけで、文字コード警告は無視。
atoiは時代遅れ、という警告も無視。

無視するのはいいが、全角文字みたいにマジで認識できない文字が入っていたとしても警告出ないので注意な。

ん?
それだと警告じゃなくてエラーがちゃんと出るやもしれんが…。

どうでもいいが、コンパイラが文字コードを判別できないってアホすぎるだろ。

473 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 17:39:12 ID:I9mkDQj0]
おっとsage忘れたごめんよ。

474 名前:1 [2008/02/03(日) 01:37:14 ID:hMoICJCS]
みんなありがとう ><
もうちょっとVCがんばってみるわ。
ちなみに、お察しの通り2005 Express Editionです。
gotoのラベルの文字衝突なんか 自力じゃ絶対わかんないって Orz
壁にぶつかったら質問しに来るね。
ほんとありがと。

475 名前:名前は開発中のものです。 mailto:sage [2008/02/03(日) 07:00:58 ID:NH1+l1Mk]
Standard Editionの俺の足元にも及ばないぜ

476 名前:名前は開発中のものです。 mailto:sage [2008/02/03(日) 13:23:59 ID:FIiEId7l]
>>474
2008でてるのに・・・

477 名前: [2008/02/04(月) 07:07:12 ID:RaDIAkOA]
2008か…
ダウソしてみる…


478 名前:名前は開発中のものです。 mailto:sage [2008/02/04(月) 12:10:13 ID:Cc7CMG8W]
>>477
俺はVisual C++ 2008 Express Editionを使っている。
使用頻度は高くないが……。
Visual C++ 2005 Express Editionと違って、
設定しなくてもWin32プログラミングが出来るのが強みだ。

479 名前:名前は開発中のものです。 [2008/02/04(月) 20:36:01 ID:RaDIAkOA]
2008ダウソしたらVC++9.0 って書いてあったけど、 Vc++6.0 の2005と どっちのほうが使ってる人多い?
それともどっちでも関係ない?
もしくは6.0で作っておけば9.0ならコンパイル通る?

480 名前:名前は開発中のものです。 mailto:sage [2008/02/04(月) 20:38:55 ID:teV1oW9H]
VC2005は8.0だよ



481 名前: [2008/02/04(月) 23:04:12 ID:RaDIAkOA]
とりあえず2008をダウソして使ってみたんですが、
DxLibのHPのガイドにそって設定を終わらせて、白い点を表示させるだけのプログラムは正常に動きました。
が、肝心のDQもどきのコンパイルは通らなかったです。
エラーメッセージはこんな感じです。

------ ビルド開始: プロジェクト: test, 構成: Debug Win32 ------
コンパイルしています...
CommandBattle.cpp
リンクしています...
.\Debug\BattleField.obj : fatal error LNK1107: ファイルが無効であるか、または壊れています: 0x23817 を読み取れません。
ビルドログは "file://c:\Documents and Settings\はかせ\My Documents\Visual Studio 2008\Projects\test\Debug\BuildLog.htm" に保存されました。
test - エラー 1、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

いろいろググって見たところ、リンカが上手く動いてないっぽい?


482 名前:名前は開発中のものです。 mailto:sage [2008/02/04(月) 23:22:27 ID:PaK1bp7B]
VisualC++用 のライブラリ使ってる?


483 名前:名前は開発中のものです。 [2008/02/05(火) 01:30:29 ID:YbsfZF5u]
>>482
ちゃんとVC用のを使ってます><
サンプルは一応動くんですよねぇ…。

ファイルの追加のやり方が間違ってる?

484 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 01:54:57 ID:JnBm9OcX]
>>1には悪いけどはかせでワロタ

485 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 01:57:31 ID:c8iqtCfM]
>>483
↓これはもう試した?

プロジェクトのプロパティから、構成→全般
文字セットの欄 → 「マルチバイト文字セットを使用する」に変更

486 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 12:53:15 ID:2IEJhn/E]
>>483
リンク時のエラーということは文字セットの問題じゃないな。
Releaseモードでコンパイルしてみたらどうだ。
確か、俺はDebugモードではライブラリが入ってなくて
実行時にエラーになった覚えがある。
Releaseモードだとデバッガが使えなくなるのが難点だが。

あと、481のログは全部のソースファイルをビルドしたやつか?
ソースファイルが1つのはずはないが……。

>ファイルの追加のやり方が間違ってる?
どのように追加したのか詳しく説明してくれ。

487 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 18:16:38 ID:Ehp9HBzC]
>>485
それ2008からなくなったよ

488 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 18:32:15 ID:tL3mZ0gl]
>>487
あるじゃねーかww

釣られてしまった

489 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 21:36:16 ID:YoGlW1vl]
流れ無視で書くけど致命的なエラーだからBattleField.objってのに
単純に出力されてないとかロックがかかっててアクセスできないとか
リンカが想定してるobjではないとかそんな感じだとおも
つーかLNK1107もちゃんとヘルプで確認しろよ

490 名前: [2008/02/06(水) 09:36:50 ID:q7r4U2fq]
みんなありがとう
体調不良で早く寝て、朝起きて出かける前に少しいじって、出先から携帯カキコ。
LNK1107のエラーはBCCでコンパイルしたobjファイルを削除してからビルドしたら解決した。
>>489の言うとおりヘルプ見たら解決できた。
ググるだけで、ヘルプ見るって考えが無かったよ orz

だけど、また違うエラーがでてきた。
家に帰ってからじっくりやってみる。



491 名前: [2008/02/07(木) 08:19:47 ID:+l6ry8aS]
Useable.obj : error LNK2005:
"public: static char * global::c" (?c@global@@2PADA) は既に BattleField.obj で定義されています。
C:\Documents and Settings\はかせ\My Documents\Visual Studio 2008\Projects\test\Debug\test.exe :
fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。

現状のエラーは上の感じです。LNK2005が205箇所でてます。
エラー内容はヘッダを複数回重複して読み込んでる、ってことみたいなんですが、
#ifndef _CHARACTER_H_
#define _CHARACTER_H_

本体

#endif

とやって回避したつもりでしたが、できてない様子。
ヘルプを見ると
ヘッダに
extern BOOL MyBool;
cppソースに
MyBool = false;
と記述しろ、と書いてありましたが、記入すると

error C2146: 構文エラー : ';' が、識別子 'MyBool' の前に必要です。
とエラーが出ます。

現状報告でした。



492 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 08:37:14 ID:XCIeOzX/]
#ifdef _MSC_VER
#define pragma once
#endif /* _MSC_VER */

ヘッダの重複を避けるなら先頭に↑とでも書いておけば。

493 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 08:37:58 ID:XCIeOzX/]
#pragma once

だったorz

494 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 11:11:53 ID:4ZyDT5RJ]
>>491
> cppソースに
> MyBool = false;
> と記述しろ、と書いてありましたが、

cppの方でヘッダインクルードしてる?
ってか、ソース晒したほうが早いような

495 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 12:04:04 ID:QgLjGbkn]
>エラー内容はヘッダを複数回重複して読み込んでる、ってことみたいなんですが、
>#ifndef _CHARACTER_H_
>#define _CHARACTER_H_
>
>本体
>
>#endif
>
>とやって回避したつもりでしたが、できてない様子。
これ(インクルードガードという)は全部のヘッダにやる必要があるぞ。
面倒だったら大抵のコンパイラが対応している
#pragma once
でも良い。
ヘッダファイルにグローバル変数の定義とか
記述していると重複するのでこんなエラーが出る。

>>491
> cppソースに
> MyBool = false;
> と記述しろ、と書いてありましたが、記入すると
これはBOOL MyBool = false;
の間違いじゃないか?
多分MyBoolの実体をcppソースに定義する必要があるはず。

>error C2146: 構文エラー : ';' が、識別子 'MyBool' の前に必要です。
>とエラーが出ます。
MyBool = false;
の前には何がある?
多分読み込んでいるヘッダファイルの中身がおかしい。
このエラーだと;の抜けか?

496 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 13:24:18 ID:/8kqxVw7]
BOOLのtypedefしたヘッダ読んでないんだろうよ
あとBOOLはfalseじゃなくFALSEだな

497 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 21:59:20 ID:tz5rxEMj]
そういやー、Usable.h の
static int amount;
static Item *itemList;
に対する
int ItemList::amount = 0;
Item * ItemList::itemList = NULL;
の部分は、上のと似たような理由でコメントアウトしたような気がするなー
そもそも静的変数って 0 で自動的に初期化されるんだっけか?

498 名前:1 [2008/02/07(木) 23:31:34 ID:+l6ry8aS]
コンパイルとおったぁぁぁああああああああああああああああ!

>>491のエラーの原因は
ヘッダファイルで関数の中身を書いてたからみたいです。
たとえば
//* const.h
class global{
 public:
  static char c[64];
  static std::string msg;
};
char * global::c = 0;
std::string global::msg = "";
はダメで


//* const.h
class global{
 public:
  static char c[64];
  static std::string msg;
};

//* const.cpp
char * global::c = 0;
std::string global::msg = "";

と、ファイルを分ければおk。
…仕様なのかな?

ろだの調子が悪いみたいなので、あとでファイルあげます。
みんな本当にありがとう T◇T

499 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 00:51:30 ID:8VOzPRyE]
>>498
静的メンバ変数はグローバル変数と似たような扱いになる。

common.hにてグローバル変数g_varが存在し、a.cpp, b.cppがそれぞれincludeしているとする。
a.cppがコンパイルされる→a.objにg_varが存在する
b.cppがコンパイルされる→b.objにg_varが存在する
最終的にリンクするときにg_varがバッティングする。

500 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 01:11:45 ID:MoDyMZB7]
某ランドでは動くのにね



501 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 11:48:47 ID:sAmmpMO4]
>>498
> //* const.h
> class global{
>  public:
>   static char c[64];
>   static std::string msg;
> };
>
> //* const.cpp
> char * global::c = 0;
> std::string global::msg = "";
こうではなくて、こちらが正しい。

//* const.h
class global{
 public:
  static char c[64];
  static std::string msg;
};
extern char * global::c;
extern std::string global::msg;

//* const.cpp
char * global::c = 0;
std::string global::msg = "";

つまり、ヘッダファイルに記述するのは
変数や関数、クラスの宣言であって、定義ではない。
これはBorland C++でも問題が出たと思うぞ。
多分Borland C++でコンパイルした時は複数のcppファイルで
ヘッダファイルをインクルードしていなかったから問題が起こらなかったのだろう。

502 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 12:50:49 ID:l8JQSvGp]
>>501
デタラメ書くなよ
コンパイルできないぞ

あと配列をポインタに変換してexternさせると長さ失うからお勧めしない

503 名前:501 mailto:sage [2008/02/08(金) 13:15:21 ID:sAmmpMO4]
>>502
すまん、間違えた。
クラスのstaticメンバだったんだな。
普通のグローバル変数と勘違いしていた。
クラス自体が宣言だ。
> extern char * global::c;
> extern std::string global::msg;
これはいらない。501で言ったことは忘れてくれ。

あと、確かに>>502の言うように
//* const.cpp
char global::c[64];
としたほうがいいな。

それで気づいたのだが、
char * global::c = 0;
はバグだな……。
ここで配列の初期化はできないぞ。
しかもポインタで代入してるし……。
>>1にはコンストラクタを使えといっておく。

504 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 22:54:29 ID:1LutvMl1]
ぼ、ぼ、ぼくも、C++でゲーム作るんだお。
すーぱーマリおだお。
members2.tsukaeru.net/ogawa/gameprogu2.html

さん、をつけて、ねっ。はずかしがりや、さんっ。
ぼ、ぼ、ぼくは、言語にふりまわされないんだからっ。えっへん、だお。
なんかー、言語名を冠につけるってはずかしいお。きゃっ。
すれちがっている。ミーンがすれちがっている。しゅーるだお。
ぼくね、IQ300なんだおって細君にいったら、絶対30だからっ!って言われたの。
1回転して、30になっちゃたんだね。って言ったら、ほんとに30だねって感心されたお。ぶぃっ!

なにがいいたいかってーと、まぁ、言語に振り回されんなや、ゲームなんて、たかだか、数値と画面を
更新してるだけのもんだで。まじでそんだけ。ぷっ。だよな。むずかしいことなんて、ひとつもないぜ。
まぁ、頑張れや。ぼ、ぼくは、いま、がんばれ屋さんです。がんばれ、1。
あんまりにも言語に振り回されている様が、恥ずかしかったので、まぁ、書き込んでしまた。

ぼくのオーバードライアブ(波紋)が、伝わっただろうか。夕陽のオレンジのオーバードライアブ(覚醒の波紋(あの裏側が目覚める!))

505 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 00:26:46 ID:41azRV47]
C言語ぐらいわかってからゲーム作れよw

www.ascii.co.jp/books/books/detail/4-7561-1639-6.shtml
オススメ

506 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 00:35:32 ID:ucOS0Odn]
pc11.2ch.net/test/read.cgi/gamedev/1034694683/
ここのオガワンってヤツだろ

507 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 02:08:54 ID:uWdwi6vy]
ホームページに自分の画像を載せてるけどナルシストなのかな?

members2.tsukaeru.net/ogawa/index.html

508 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 02:17:17 ID:OEsnMtz3]
>>504
あまりにも酷いソースでお茶噴いたww

509 名前:名前は開発中のものです。 mailto:sage [2008/02/09(土) 21:35:27 ID:vKTa7a8F]
>>504
宣言わろた

510 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 00:36:09 ID:Ze9YCxYS]
>>504
> int TIME[3]; //基本的に、通番の変数は1番から使う。0番は無視。
クソワロタww




511 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 07:51:48 ID:DQWHtX5v]
using namespace std; //?

512 名前:1 [2008/02/11(月) 00:04:10 ID:vFv6OLzk]
ろだの調子が悪いんじゃなくて、サイズオーバーでした Orz
VCに変えたとたんいきなり5倍くらいサイズが増えたみたいでびっくり。

コンパイル事態は通ったものの、会話するとエラーで落ちる。
どうやらhakase.hのStringクラスが悪さしてるみたいだけど、まだ原因の特定には至ってません。

IDEに慣れるまで少し時間はかかりそうだけど
とりあえずデバッグ機能は使いこなせるようになりたいな。

tp://sakurachan.dip.jp/up/src/up9332.lzh

513 名前:名前は開発中のものです。 [2008/02/11(月) 02:35:47 ID:vFv6OLzk]
あとなんか良く分からなくなってきたので質問なんですが

const.h
class global{
  public:
   static char c[64]; //これが宣言
};

const.cpp
char global::c[64] = ""; //これが定義

でいいんですよね?
ちなみにこのクラスはexternを知らなかったので
無理やりグローバル変数として使ってた。
グローバル変数って言っても、宣言無しで使いまわしてなるだけメモリを使わないように、って用途ですけど。
コンストラクタは一回も呼び出されないので、cppで定義しました。
もしクラスを生成するなら
const.cpp
char global::c[64];
global::global(){
 c="";
}
でいいのかな?
でもコンストラクタが呼び出されるたびに初期化されちゃう?




514 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 04:10:20 ID:pgtIh2EL]
文字列と文字は違うからどちらもコンパイルできないよ

515 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 08:30:36 ID:aDsF8YDL]
>>512
たぶん 拡張子 .ncb ってヤツが一番巨大だと思うんだけど、
.ncb は各々の環境で勝手に作られるから、配布時は不要っすね、
配布用からは消して圧縮すればいいよー。

あと、すごい昔から気になってたけど
はかせって何よ?

516 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 14:28:47 ID:UBlSMgHv]
俺もそれが気になる。すげー気になるw>はかせ

517 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 14:37:13 ID:dALXccIV]
>>481を見るとユーザ名みたいだけど
1の名前なのかな

518 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 14:50:42 ID:G+Qy0YvV]
これからは>>1をはかせと呼ばせていただきます

519 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 20:01:42 ID:o0lcrIeV]
NCBはインテリセンスのキーワードデータベースだな
STL使うと相当膨れる。

520 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 22:31:24 ID:ummcWhTi]
余計なファイルを作らせない設定ってないんですか?



521 名前:名前は開発中のものです。 mailto:sage [2008/02/11(月) 23:57:52 ID:HhQuAIPA]
インテリ切れば?

522 名前: [2008/02/12(火) 00:22:15 ID:tLRoXqiP]
はかせ は僕のあだ名です。
もっとも今もそうやって呼ぶ人はいなくなったけど、気に入ってるから使ってます。かたわれも同様。
本名ってのもアレだし。
>>512のエラーですがデストラクタで
delete [] restr;
をする時にエラーになってるっぽい。
危険だけどコメントアウトすると動くんだけどなんで?
コンストラクタはそれぞれ引数に char* FILE* std::string を取る三種類しかなくて
それぞれで char str[] と char restr[] を new してて
strとrestrの配列は同じ長さをとってあるはずなのになんで?

でも、まったく違うところが原因かも。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<293KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef