トップページ > 過去ログ > 記事閲覧
C++
名前:サイヤ人 日時: 2008/07/26 00:44

また問題が出たので教えていただきたいです。 下のプログラムでメイクが出来ません。 ちなみにメイク結果は下にのせてあります ご指摘お願いします //hello.cpp #include <iostream> using namespace std; int main() { cout << "hello" << endl; } メイク結果 > H:\課題研究\C++ボーランド全て\コンパイラ\Bin\make.exe -fDebug\test.mak TARGET MAKE Version 5.2 Copyright (c) 1987, 2000 Borland bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -DDEBUG -nDebug -c H:\課題研究\C++ボーランド全て\作成した物\test\game.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland H:\課題研究\C++ボーランド全て\作成した物\test\game.cpp: bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -DDEBUG -eDebug\test.exe Debug\game.obj Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'WinMain' が未解決(H:\課題研究\C++ボーランド全て\コンパイラ\LIB\C0W32.OBJ が参照) ** error 1 ** deleting Debug\test.exe Make End !! (Elapsed time 0:22.093)

Page: 1 |

Re: C++ ( No.1 )
名前:キーチック 日時:2008/07/26 05:20

とりあえず,C++はmainではなくWinMainですね.
Re: C++ ( No.2 )
名前:優柔不断 日時:2008/07/26 06:10

C++でもmainであっています。それよりも、ターゲットがWindowsアプリケーションになっていませんか?
Re: C++ ( No.3 )
名前:サイヤ人 日時:2008/07/28 12:36

なっています・・・ 結局何が間違っているんでしょうか??
Re: C++ ( No.4 )
名前:通りがかり 日時:2008/07/28 13:06

コンソールアプリケーションならいけるんじゃ? 私も初心者だけどさw
Re: C++ ( No.5 )
名前:Sura 日時:2008/07/28 14:50

>bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y ... の "-W" は Windowsアプリケーションとしてコンパイルするという意味です。 即ち、優柔不断さんが仰っているように ターゲットがコンソールアプリケーションになっていないのが原因です。 BCC Developer を使っているなら [プロジェクト(P)]-[プロジェクト設定(O)]の "アプリケーション"タブの ターゲットを コンソールアプリケーション にしてください。
Re: C++ ( No.6 )
名前: 日時:2008/07/30 11:06

>結局何が間違っているんでしょうか?? 間違っているのはコンパイラに渡す引数、 (プロジェクトの設定)でしょう。 まずはC言語にの仕様ついてもう少し勉強すると、 考えやすくなると思います。 ざっと説明しますが、できるだけわかりやすく する為に多少の語弊があるかもしれません。 C/C++には「エントリーポイント」と呼ばれる、 プログラムの実行時に最初に呼ばれる関数が あります。 これはコンパイラによって設定できるものが 殆どですが、C言語の規定では「main」関数が最初 ということになっています。 しかしこれらエントリーポイントは 処理系によって定義されることを許可している為、 Windows上でのプログラミングであれば、 ウィンドウアプリケーションの エントリーポイントはWinMainとなります。 #DLLであればDllMainなどがエントリー #ポイントにあたります。 コンソールアプリケーションや ウィンドウアプリケーションといった違いは 言語的には存在しませんがコンパイラにより、 これらはオプションによって指定されることが 殆どです。 BCCの場合はSuraさんが書いている、 -Wオプションで、ウィンドウアプリケーションを コンパイルするという意味になります。 そこで改めて今回のエラーを見てみると、 bcc32 -W -3 -Od 〜 ~~~ 上記のオプションが指定されている為、 エントリーポイントの関数名はWinMainとなります。 しかしコンパイル対象のソースにはWinMainが無い為 定義されているはずのシンボル 'WinMain' の 定義が見つからず、解決できないというエラーが 出ているわけです。 解決策としては、 Suraさんが書いている方法をとり、 エントリーポイントの関数名がmainになるように プロジェクトを設定してやるのが一番スマートでしょう。

Page: 1 |