掲示板ランキング  プラスター(プラスター)  プラスター(フェルビナク配合)  塗り薬(ゲル)


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.7334

ウィンドウ作成ができません
投稿者---rarara(2007/04/10 16:29:06)


C言語でウィンドウを作成したいのですが、コンパイルができません。
ソースは、

******************************************************************
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);

//Winmain関数
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
{
return (int)msg.wParam;
}

//ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg){

}

return 0;
}
******************************************************************

となっており、エラー文は

エラー E2451 root.c 11: 未定義のシンボル msg(関数 WinMain )
*** 1 errors in Compile ***

となっています。
間違えている点が分かる方はぜひとも指摘や、ご教授お願いいたします。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ウィンドウ作成ができません 7335 επιστημη 2007/04/10 17:00:46
<子記事> Re:ウィンドウ作成ができません 7343 かずま 2007/04/11 11:34:43


No.7335

Re:ウィンドウ作成ができません
投稿者---επιστημη(2007/04/10 17:00:46)
http://blogs.wankuma.com/episteme/


>エラー E2451 root.c 11: 未定義のシンボル msg(関数 WinMain )
>*** 1 errors in Compile ***
>となっています。

アッタリマエです。

int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
{
  return (int)msg.wParam; /* エラー行 */
}

msgなんて引数ありません。



この投稿にコメントする

削除パスワード

No.7336

Re:ウィンドウ作成ができません
投稿者---rarara(2007/04/10 20:49:22)


>>エラー E2451 root.c 11: 未定義のシンボル msg(関数 WinMain )
>>*** 1 errors in Compile ***
>>となっています。
>
>アッタリマエです。
>
>int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
>{
>  return (int)msg.wParam; /* エラー行 */
>}
>
>msgなんて引数ありません。

msgという存在しない引数を指定しているためエラーが発生するのは分かりました。
だとするとエラー行になる return には何を入れればよいのでしょうか?
試しに 0 等を入れたりしたら下記の様なエラー文が発生しました。

Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)

どうすればよいのかどなたか教えていただけないでしょうか?


この投稿にコメントする

削除パスワード

No.7337

Re:ウィンドウ作成ができません
投稿者---επιστημη(2007/04/10 21:00:50)
http://blogs.wankuma.com/episteme/


>Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
>
>どうすればよいのかどなたか教えていただけないでしょうか?

コンパイルオプションに誤りがあり、(Windows-GUIアプリではなく)
コンソール・アプリを作ろうとしてます。
マニュアルを読みましょう。



この投稿にコメントする

削除パスワード

No.7340

Re:ウィンドウ作成ができません
投稿者---rarara(2007/04/11 07:41:45)


>>Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
>>
>>どうすればよいのかどなたか教えていただけないでしょうか?
>
>コンパイルオプションに誤りがあり、(Windows-GUIアプリではなく)
>コンソール・アプリを作ろうとしてます。
>マニュアルを読みましょう。

つまり、コンパイルの仕方が悪いということでしょうか?
コンパイルには、borlandのコンパイラを使用し、コマンドプロンプトで
bcc32 ファイル名.c
でコンパイルしていますが、これが良くないということでしょうか?
だとしたら、正しい方法をどなたか教えていただけないでしょうか?


この投稿にコメントする

削除パスワード

No.7341

Re:ウィンドウ作成ができません
投稿者---επιστημη(2007/04/11 10:23:07)
http://blogs.wankuma.com/episteme/


>つまり、コンパイルの仕方が悪いということでしょうか?

YES

>コンパイルには、borlandのコンパイラを使用し、コマンドプロンプトで
>bcc32 ファイル名.c
>でコンパイルしていますが、これが良くないということでしょうか?

YES

>だとしたら、正しい方法をどなたか教えていただけないでしょうか?

だからマニュアルを読め、と。



この投稿にコメントする

削除パスワード

No.7342

Re:ウィンドウ作成ができません
投稿者-----(2007/04/11 11:07:08)


>だとしたら、正しい方法をどなたか教えていただけないでしょうか?

コンパイラ付属のヘルプファイルの
「コマンドラインオプション」の項を参照し、
「ターゲット」というキーワードについて調べてみると
よいかもしれません。


この投稿にコメントする

削除パスワード

No.7344

Re:ウィンドウ作成ができません
投稿者---rarara(2007/04/11 15:38:19)


>>だとしたら、正しい方法をどなたか教えていただけないでしょうか?
>
>コンパイラ付属のヘルプファイルの
>「コマンドラインオプション」の項を参照し、
>「ターゲット」というキーワードについて調べてみると
>よいかもしれません。
現在ヘルプファイルで調べながら行っていますが、コマンドラインオプションの項が複数あり、「ターゲット」というキーワードで調べようとしてもうまくいきません。また、どれもbcc32について書かれているのしか見つけられませんでした。手探りの状態で行っておりbrc32や、brcc32等でコンパイルを行っていますが、やはりうまくいきません。
もう少しヒントなどいただけないでしょうか?


この投稿にコメントする

削除パスワード

No.7345

Re:ウィンドウ作成ができません
投稿者-----(2007/04/11 16:04:01)


コマンドプロンプトで
bcc32 <Enter>
を実行すると、Borland C++ Compilerでのコンパイル時に
設定できるオプションを表示します。全部ではないと思いますけれど。
その中に、Windowsアプリケーションを作成するには
何というオプションを付けてコンパイルすればよいかが出ています。

その他、「Borland C++ オプション」あたりで
ググってみてもよいかもしれません。ネットをフル活用すれば、
自力で見つけられるはずです。


この投稿にコメントする

削除パスワード

No.7347

Re:ウィンドウ作成ができません
投稿者---rarara(2007/04/12 13:09:11)


コマンドプロンプトで
bcc32 <Enter>
を実行すると設定できるオプションを表示し、それらしいものである
-tWxxx Create Windows appというのがあったり、「Borland C++ オプション」あたりでググってみたところ、-Wがあったので、

bcc32 ファイル名.c -tWxxx や、
bcc32 ファイル名.c -W

を実行したら、また

エラー E2451 root.c 11: 未定義のシンボル msg(関数 WinMain )
>*** 1 errors in Compile *** や、

Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)

が発生してしまいました。
このソースは、C言語の本に載っているサンプルコードをそのまま記述しているのですがどうしても動きません。やはりコンパイルの方法がまだ間違っているのでしょうか?
もう一度ソースを載せておきます。

*******************************************************************
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);

//Winmain関数
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
{
//ウィンドウクラスの登録
//メインウィンドウの生成
//メッセージループ
return (int)msg.wParam;
}

//ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg){
//メッセージごとにやりたいことを記述する
}

return 0;
}
*******************************************************************



この投稿にコメントする

削除パスワード

No.7348

Re:ウィンドウ作成ができません
投稿者---Blue(2007/04/12 14:45:37)


堂々巡りな気がしますが。

>コンパイルができません
>エラー E2451 root.c 11: 未定義のシンボル msg(関数 WinMain )

>msgなんて引数ありません。

>msgという存在しない引数を指定しているためエラーが発生するのは分かりました。

>コンパイルオプションに誤りがあり

>エラー E2451 root.c 11: 未定義のシンボル msg(関数 WinMain )
>が発生してしまいました。

>msgなんて引数ありません。






この投稿にコメントする

削除パスワード

No.7349

Re:ウィンドウ作成ができません
投稿者---Blue(2007/04/12 14:53:43)


一応、定番の「猫でもわかるプログラミング」の
http://www.kumei.ne.jp/c_lang/bcc/index.html

第3章 Windowsのプログラムを作ってみる
のところを参考にしてみてはどうでしょうか。

そのとおりやればきちんとWindowは作成できるはず。


この投稿にコメントする

削除パスワード

No.7350

Re:ウィンドウ作成ができません
投稿者---επιστημη(2007/04/12 15:01:37)
http://blogs.wankuma.com/episteme/


>bcc32 ファイル名.c -tWxxx や、
>bcc32 ファイル名.c -W

やれやれ… bcc32<enter> で出てくるメッセージのしょっぱなに:

Syntax is: BCC32 [ options ] file[s]

ってあるだろがよ。オプション(-なんたら)がファイルより先だって。

>エラー E2451 root.c 11: 未定義のシンボル msg(関数 WinMain )
>>*** 1 errors in Compile *** や、

前述のとおり。 msgって引数ありません。

>Error: 外部シンボル '_main' が未解決(C:\BORLAND\BCC55\LIB\C0X32.OBJ が参照)
>
>が発生してしまいました。

bcc32 -tW xxx.c

>このソースは、C言語の本に載っているサンプルコードをそのまま記述しているのですがどうしても動きません。やはりコンパイルの方法がまだ間違っているのでしょうか?

これが本当に"そのまま"なら、その本が間違っています。



この投稿にコメントする

削除パスワード

No.7351

Re:ウィンドウ作成ができません
投稿者---rarara(2007/04/12 16:12:28)


>>このソースは、C言語の本に載っているサンプルコードをそのまま記述しているのですがどうしても動きません。やはりコンパイルの方法がまだ間違っているのでしょうか?
>
>これが本当に"そのまま"なら、その本が間違っています。

いろいろな方の投稿によりコンパイルの仕方が分かりました。ありがとうございます。
本のソースが間違っているようなのですが、だとしたら

*******************************************************************
#include <windows.h>

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp);

//Winmain関数
int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLine, int nCmdShow)
{
//ウィンドウクラスの登録
//メインウィンドウの生成
//メッセージループ
return (int)msg.wParam;
}

//ウィンドウプロシージャ
LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
switch(msg){
//メッセージごとにやりたいことを記述する
}

return 0;
}
*******************************************************************

このソースの11行目のreturnには何を入れればよいのでしょうか?
ぜひともご教授お願いいたします。
他の方の意見で、
*******************************************************************
一応、定番の「猫でもわかるプログラミング」の
http://www.kumei.ne.jp/c_lang/bcc/index.html

第3章 Windowsのプログラムを作ってみる
のところを参考にしてみてはどうでしょうか。
*******************************************************************
というのがありましたが、自分はまだまだ未熟なので
わからないことばかりで、とても理解に苦しんでいます。


この投稿にコメントする

削除パスワード

No.7352

Re:ウィンドウ作成ができません
投稿者---wiz(2007/04/12 17:50:28)


>*******************************************************************
>一応、定番の「猫でもわかるプログラミング」の
>http://www.kumei.ne.jp/c_lang/bcc/index.html
>の
>第3章 Windowsのプログラムを作ってみる
>のところを参考にしてみてはどうでしょうか。
>******************************************************************
>というのがありましたが、自分はまだまだ未熟なので
>わからないことばかりで、とても理解に苦しんでいます。

で、提示されたところはちゃんと見ましたか?
見てれば、「何を返せば。。。」
なんて質問は出てこないと思いますが。。。
やりもしないで、他にっていうのは、
情報をくれた人に失礼です。

上記のページのどこが理解できないかを
書かないと、理解できませんって言われても
説明しようがないです。


この投稿にコメントする

削除パスワード

No.7353

Re:ウィンドウ作成ができません
投稿者---かずま(2007/04/12 19:15:36)


> 本のソースが間違っているようなのですが、だとしたら

間違っているのではなく、未完成なのです。
コメントになっている「ウィンドウクラスの登録」や「メインウィンドウの生成」
のコードを書かないと、ウィンドウを作成するプログラムにならないことに
気づきませんか?

その本の書名は何ですか?

「メッセージループ」のコードは
    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
ですから、関数の先頭で、MSG msg; という変数宣言を書けば、
return (int)msg.wParam; はエラーになりません。

入門書だったら、その未完成なプログラムを完成させるためのコードが
後に書いてあるはずですが、それを見ずに掲示板で質問するのはなぜですか?


この投稿にコメントする

削除パスワード

No.7372

Re:ウィンドウ作成ができません
投稿者---金魚ちゃん(2007/04/21 16:18:30)


参考にしている本って『猫でもわかるゲームプログラミング』ですか?
それならばP18、P19、P20 に WinMain 関数の記述例やウインドウプロシージャの
記述例が載っていますよ。
よく参考にしている本を読んでみて下さい。
そうそう、間違いを記述してはいないはずです。



この投稿にコメントする

削除パスワード

No.7343

Re:ウィンドウ作成ができません
投稿者---かずま(2007/04/11 11:34:43)


WinMain でなく、main で始めてみました。
#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int main(void)
{
    HWND hWnd;  MSG msg;  WNDCLASS wc = { 0 };

    wc.style = CS_HREDRAW | CS_VREDRAW;
    wc.lpfnWndProc = WndProc;
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    wc.hbrBackground = GetStockObject(WHITE_BRUSH);
    wc.lpszClassName = "class name";
    if (!RegisterClass(&wc)) return FALSE;

    hWnd = CreateWindow(wc.lpszClassName, "window name", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
        0, 0, 0, 0);
    ShowWindow(hWnd, SW_SHOWDEFAULT);
    UpdateWindow(hWnd);

    while (GetMessage(&msg, NULL, 0, 0)) {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp)
{
    switch (msg) {
    case WM_DESTROY: PostQuitMessage(0); break;
    default: return (DefWindowProc(hWnd, msg, wp, lp));
    }
    return 0;
}
冗談ですので、ちゃんと入門書を読みましょう。



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧





掲示板提供:(有)リアル・インテグリティ