違うcppに書いた関数を読み込んでくれません

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

違うcppに書いた関数を読み込んでくれません

#1

投稿記事 by aiukao » 16年前

高校3年です。VISTA
このサイトを参考にC++でシューティング作ろうとしています。
龍神録をみてみるとプログラムごとにcppを分けていました。自分は最初一つのcppでやっていたんですがそのときはうまくいったのですが分けてみると、うまく関数を呼ぶことができません。
キーの取得は3章のとおりに書いたらうまく関数を読むことができました。
メッセージボックスを表示してウィンドウサイズかフルスクリーンか選びたいのですが

error C3861: 'messagebox_screen': 識別子が見つかりませんでした
main.cpp
main(){

messagebox_scrren();

}
message.cpp
int messagebox_screen(){													//スクリーンモード選択
        int flag;
        flag=MessageBox(
                NULL ,
                TEXT("フルスクリーンモードで起動しますか?") ,
                TEXT("スクリーン設定") , 
                MB_YESNO | MB_ICONQUESTION );
        if(flag==IDNO)
                ChangeWindowMode( TRUE );
		
}
どうすれば関数を読めるでしょうか?お願いします

たかぎ

Re:違うcppに書いた関数を読み込んでくれません

#2

投稿記事 by たかぎ » 16年前

> messagebox_scrren();

つづりが間違っているだけとか?

けれども、エラーメッセージが本当に

> error C3861: 'messagebox_screen': 識別子が見つかりませんでした

であれば違いますね。
たぶん、関数の宣言を忘れているだけかと思います。

aiukao

Re:違うcppに書いた関数を読み込んでくれません

#3

投稿記事 by aiukao » 16年前

すいません 本当は messagebox0と宣言していまして0じゃ教えてもらうのにわかりにくいと思いmessagebox_screenと表記したためミスをしていました。書き直して書いてみました↓
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
       

main.cpp 

messagebox_screen();
.
.
.
.
たぶん下はあまり関係ないと思っています.


message.cpp


int messagebox_screen(){													//スクリーンモード選択
        int flag;
        flag=MessageBox(
                NULL ,
                TEXT("フルスクリーンモードで起動しますか?") ,
                TEXT("スクリーン設定") , 
                MB_YESNO | MB_ICONQUESTION );
        if(flag==IDNO)
                ChangeWindowMode( TRUE );
		
}
です。エラーは error C3861: 'messagebox_screen': 識別子が見つかりませんでした とでます。


本当に申し訳ありません

質問ですが違うcppから関数を呼ぶために何か特別なことは必要でしょうか?

aiukao

Re:違うcppに書いた関数を読み込んでくれません

#4

投稿記事 by aiukao » 16年前

すいません

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){





main.cpp
が逆ですね、 正しくは

main.cpp

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){

です

もっと確認してから載せたいと思います

yu

Re:違うcppに書いた関数を読み込んでくれません

#5

投稿記事 by yu » 16年前

あくまで推測ですが、cppファイルはどこのフォルダに追加されましたか?
龍神録ならmydatフォルダ→sourceフォルダを選択してsourceフォルダの中にファイルを入れてください。

messagebox_screen()がint型で値を返していないのに、そのエラーが出ていないので

voidにすれば問題無いと思います。


そして、他のファイルで宣言した関数を呼び出すためにはそのファイルでは
extern宣言をしなければなりません。
main.cppの上の方に

extern void messagebox_screen();


と書いてみてください。
(message.cpp内のmessagebox_screen()をint型からvoid型に直してくださいね)

extern宣言 と検索すれば多く出てくるかと思います。

龍神録の館5章でもおさらいされています。
いろいろと自分の回答が間違っているかもしれません。orz

aiukao

Re:違うcppに書いた関数を読み込んでくれません

#6

投稿記事 by aiukao » 16年前

ありがとうございます!!!!
言われて気づきました!!龍神録ではGV.hにまとめていたのを忘れていました
GV.hに書き込んでみたところうまく読みました!ありがとうございました!

閉鎖

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