ビルドできない。

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

ビルドできない。

#1

投稿記事 by » 15年前

ビジュアルC++で、タブみたいなので、複数のプログラムを同時に見ることが出来るようなので活用しようとしたら、複数あるタブのうち、2枚目や3枚目のタブが上手く実行できません。F5でビルドすると、 _WinMain@16はすでに1枚めのタブで定義されています。と出てきてビルドエラーになります。正直なにが原因なのかすら判らない状況です。それぞれのタブの中のプログラムだけであれば、(複数のタブを同時に開かなければ)ちゃんと実行できるのですが...

Re:ビルドできない。

#2

投稿記事 by » 15年前

すいません追記です。
”_WinMain@16はすでに1枚めのタブで定義されています。”の部分ですが、実際には、
”_WinMain@16はファイル名.objで定義されています。”と出てきてました。すいません。また、ファイルをまたいだ別のスクリプトも、同様に一枚目のタブのスクリプトが入っているファイル名.objで定義されていると出てきます。

dic

Re:ビルドできない。

#3

投稿記事 by dic » 15年前

WinMainが2つありませんか?
あと、開発環境を書いておいてください

//===============================================================
ビジュアルC++とありますね
もう少し詳しく書くとフォローしてくれる方があらわれるかもしれません
失礼しました
画像

シエル

Re:ビルドできない。

#4

投稿記事 by シエル » 15年前

エラーのままだと思います。
WinMainが2つ以上定義されていることが原因と思われます。

まあ2010は使ったことないので、詳しいことは分かりませんが。

Re:ビルドできない。

#5

投稿記事 by » 15年前

すいませんWinMainって何ですか。あまりにも初心者過ぎて開発環境とかいわれても何の子とかさっぱり分からないのですが...本当にすいません。

softya

Re:ビルドできない。

#6

投稿記事 by softya » 15年前

ゲームプログラミングの館から画像をお借りしてきました。
http://dixq.net/g/00.html
画面の中にWinMainと言うのが見えると思います。

こんなやつ↓
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

これは1つのプロジェクトに1つしか許されません。

>”_WinMain@16はファイル名.objで定義されています。”と出てきてました。すいません。また、ファイルをまたいだ別のスクリプトも、同様に一枚目のタブのスクリプトが入っているファイル名.objで定義されていると出てきます。

このエラーは、WinMain関数が2つある場合に出るエラーですので、2つあるタブと言うのにそれぞれWinMainがある状況じゃないでしょうか?
解決方法は2つ以上作らないことなのですが、何をしたくてこうなってしまったか書いてもらえるとアドバイスがしやすいです。参考にしているサイトを書いてもらった方が良いですね。

Re:ビルドできない。

#7

投稿記事 by » 15年前

参考にしているのは、このサイトのプログラミングの館の方です。
サンプルスクリプト2つを一つにまとめたくて、タブに開きながら作業していたのですが、実行しようとしても上手くいかなかった。ということです。正直片方が実行できればいいので、現在はプログラムを片方メモ帳に移して作業しているのですが、今後複数のスクリプトを一つのプロジェクトにまとめたいときのためにここに質問させていただきました。どうすれば一つのプロジェクトの中で複数のスクリプトを実行できるように出来ますか?
分かりにくいので言葉を足させていただくと、トップのスクリプトから、条件で別のスクリプトに飛んで別の処理をするようなソフトを作りたいのです。丁度ゲームなんかだと、メニューから選んだ項目によってぜんぜん別のことをしますよね。そういうスクリプトを一つの.ccpのファイルに入れると見辛くなりそうなので。

シエル

Re:ビルドできない。

#8

投稿記事 by シエル » 15年前

C言語の基礎を学んだほうが良さそうです。

ファイル分割などでググって調べてください。

Re:ビルドできない。

#9

投稿記事 by » 15年前

了解しました。回答ありがとうございました。

Re:ビルドできない。

#10

投稿記事 by » 15年前

解決マークを入れ忘れました。

Re:ビルドできない。

#11

投稿記事 by » 15年前

すいません。winmainの前にexternを入れればいいって事ですか?出来れば回答ください。

シエル

Re:ビルドできない。

#12

投稿記事 by シエル » 15年前

違います。softyaさんがおっしゃってることを読み直してください。

シエル

Re:ビルドできない。

#13

投稿記事 by シエル » 15年前

ここをしっかり熟読してください。
http://dixq.net/g/02.html

softya

Re:ビルドできない。

#14

投稿記事 by softya » 15年前

タイトル、本編、エンディングなどを別々のファイルにまとめたいと言うことであれば、シエル さんも書いているファイル分割と言う技法が必要となります。
検索キーワードとしては「ファイル分割 C言語」が適切だと思います。

ただ、このファイル分割のためにはC言語の関数の仕組みをちゃんと理解している必要があります。
WinMainって辺りから調べてみてください。

ちなみC言語などのコンパイル型のプログラム場合はプログラムのコードをスクリプトと呼ばずにソースコードと呼びます。プログラムコードをスクリプトと呼ぶのは、HSP,javascript,PHP,Perl,Ruby,Phythonなどインタプリタ型言語が一般的でしょうか。

softya

Re:ビルドできない。

#15

投稿記事 by softya » 15年前

>すいません。winmainの前にexternを入れればいいって事ですか?出来れば回答ください。

これもC言語の基礎の問題なのですが、同じ名前の関数は1つしか存在できません。
※関数名のスコープ次第では例外あり。
なのでWinMainが2つ存在する時点でアウトです。

Re:ビルドできない。

#16

投稿記事 by » 15年前

すいません。今softyaさんの書き込みを読み直して気づきました。アウトですね。シエルさんの言っているサイトに行って出直します。

シエル

Re:ビルドできない。

#17

投稿記事 by シエル » 15年前

私が貼っているページだけ読んでも、WinMainの事がちょこっとかいてあるだけです。
ファイル分割についてはググって調べてください。

Re:ビルドできない。

#18

投稿記事 by » 15年前

あ、はい。今ググって来ました。で、ちょっと質問なんですけど、今typedef structって言うので、幾つかの変数をまとめてWinMainの外で宣言しています。これは分割した方ではexternを頭につけて宣言すれば良いのでしょうか。

Re:ビルドできない。

#19

投稿記事 by » 15年前

すいません上の質問無視してください。

たいちう

Re:ビルドできない。

#20

投稿記事 by たいちう » 15年前

VCで複数のソースコードを開いて編集したいと言う事ですよね?
そしてそれぞれのソースコードにはWinMainがあると。

結論としては、1つのソリューションに複数のプロジェクトを追加し、
それぞれのプロジェクトが1つずつWinMainを含むようにすればよいです。

softyaさんの添付してくれたファイルで説明すると、
画面左のソリューションエクスプローラでは、
1つのソリューション'DxLib'を開いていますが、
ソリューション'DxLib'は1つのプロジェクト'DxLib'を持っています。
プロジェクト'DxLib'はソースコード'test.cpp'を持っていて、
ソースコード'test.cpp'が関数WinMainを持っています。

既に他の方が説明されているとおり、1つのプロジェクトには
1つのWinMainしか存在してはいけません。
2つのWinMainを含むファイルを同時に管理したい場合、
プロジェクトを追加してください。

ソリューションエクスプローラの『ソリューション'DxLib'』
と書いてある所で右クリックすると、プロジェクトの追加が選択できます。


別の方法として、プロジェクトとは関係ないファイルをVCで開くこともできます。
現在のエラーの内容から、ソリューションエクスプローラから2つのファイルが
見えていると思いますが、そこへの追加は本当に必要な方のみとして、
参考のために開くファイルは、メニューのファイル-開くから開きます。

さらに別の方法として、ソリューションエクスプローラでファイルを選び、
右クリックのプロパティで、そのファイルだけビルドしない設定にすることもできます。

用途に合わせて色々試してみて下さい。
VC以外のテキストエディタで開く、というのも、用途によっては正解の1つです。
さすがにメモ帳よりも良いエディタを使う人が殆どですが。

dic

SLGを作成中ですが、DirectX周りがうまく動作しないです

#21

投稿記事 by dic » 15年前

現在SLGを製作中なのですが、マウスの位置情報の取得がどうも少しずれてて
うまくクリック処理ができないのです

下にできてるものをアゲておきます
メッセージボックスの嵐がでたらESC押しっぱなしで抜けてください
http://www1.axfc.net/uploader/Sc/so/151229

問題はというと2つあります
1つは、マウスの位置情報が少しずつ下にいくにつれてずれていくことです
2つめは、800x600の領域だと画面の更新(Flip)が行われるのですが、
1024x768だと、あまった部分の画面の更新がされないということです
DxDraw3を使ってるから、サポートしてないのかなぁとか思いつつも
調べる手段もなく困ってます

助言をいただけると助かります
画像

dic

Re:SLGを作成中ですが、DirectX周りがうまく動作しないです

#22

投稿記事 by dic » 15年前

解決しました
1つめは、#define の座標指定の数字が微妙に間違ってました
2つめは、この画面での画面領域設定が一箇所だと思ってましたが、複数箇所にありました

閉鎖

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