• ベストアンサー

コンパイルすると error C1083 が出てしまいます

 -スペック- Microsoft Visual Studio 2008 Version 9.0.21022.8 RTM Microsoft .NET Framework Version 3.5 SP1 ---------------------------------------------------------------- 以下のプログラムを実行すると、error C1083: include ファイルを開けません。'myhelper.h': No such file or directory っていうエラーが出ます。 ----------------------------------------------------------------  -プログラム-  - mymain.cpp の中身 - #include "myhelper.h" #include "mymain.h" //自キャラのデータ Point2D g_jikipos = {40, 400}; //自キャラの座標 //画像ハンドル int g_jikiimage[11]; //色々なファイルの読み込み int LoadFiles(){ //画像ファイル読み込み if(LoadDivGraph("media\\player01.bmp", 11,11,1,64,64,g_jikiimage) == -1) return -1; return 1; }  - mymain.h の中身 - //他から呼び出させるMyMainの関数 void MyMain(); int LoadFiles();  - myhelper.h の中身 - #include "DxLib.h" #include <limits.h> #include <math.h> //構造体宣言 //座標またはベクトルを記録する構造体 struct Vector{ float x,y; }; typedef Vector Point2D; //線を記録する構造体 struct Line2D{ Point2D startpos, endpos; float katamuki; //傾きをラジアン値で記録 Vector speed; //移動している場合は速度をセット }; //球体を記録する構造体 struct Ball2D{ Point2D position; float hankei; //半径 }; //四角形を記録する構造体 struct Rect2D{ Point2D lefttop; Point2D rightbottom; float width; float height; }; //ライブラリ関数 Point2D PosInView(Point2D in); int XInView(float inx); int YInView(float iny); void ScrollToLeft(float jikiposx); void ScrollToRight(float jikiposx); void ScrollToUp(float jikiposy); void ScrollToDown(float jikiposy); void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness); void DrawCircleInView(float x, float y, float r, int Color, int FillFlag); void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag, int *imgarray, int allframe, float fps); //ベクトル関数 Vector CreateVector(Vector in, float veclen); Vector AddVector(Vector v1, Vector v2); Vector SubVector(Vector v1, Vector v2); Vector AddVectorInFrameTime(Vector pos, Vector speed); Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel); Vector Normalize(Vector in); Vector RotateVector(Vector in, float radian); float VectorLengthSquare(Vector in); float DotProduct(Vector v1, Vector v2); float CrossProduct(Vector v1, Vector v2); void SetLine2DKatamuki(Line2D *in); void DrawLine2D(Line2D in, int Color, int Thickness); void DrawBall2D(Ball2D in, int Color, int Fill); //当たり判定関数 bool HitTestLineAndBall(Line2D linein, Ball2D ballin); bool IsPointAtLineFace(Line2D linein, Point2D ptin); bool HitTestLineAndLine(Line2D line1, Line2D line2); bool HitTestBallAndBall(Ball2D a, Ball2D b); bool HitTestPointAndBox(Rect2D rect, Point2D pt); //タイマー関数 void SetSimpleTimer(int idx, int time); int GetPassedTime(int idx); //グローバル変数 extern float g_frametime; extern Rect2D g_framerect; //画面領域(当たり判定) extern Point2D g_current_field_pos; //現在の左上座標 extern Rect2D g_stagesize; //ステージサイズ //定数宣言 const float ZEROVALUE = 1e-10f; const float PIE = 3.1415926f; const int SCROLL_LIMIT = 200; myhelper.h はコピペなので間違ってはない。 ---------------------------------------------------------------- まだC言語初心者なので、どのようにすれば直せるのかわからないので 詳しくお願いします。 一応サイトで検索などをして、自分なりに調べてきて 定義が間違ってないかを見ましたけどそれでもまだわかりません。 それでは宜しくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

画像、わかりやすいねぇ、便利な世の中だ。 エクスプローラで、"...\my"っていうフォルダの中身が見えてるけど、その中には、"myhelper.h"が無いね。このファイルを見つけて、"...\my"フォルダに移動かコピーしてみるか、myhelper.hのあるフォルダをインクルードサーチパスに追加する。で、解決したらいいな。 sakana20zbさんは、書きました: > >mymain.cppと同じところにmyhelper.hがありますか? > 同じファイル内にありますね。 同じフォルダには無いみたいに見えるなぁ。myhelper.cppはあるけどmyhelper.hは無い。回答No1.bardfishさんのアドバイスと同じだから、もう一度読んで確認してごらん。 Magna

sakana20zb
質問者

お礼

まさかの"myhelper.h"がないとは・・・ありがとうございます! 画像は便利ですよねw お陰で今回のエラー解消ができました。 ありがとうございます

sakana20zb
質問者

補足

そうですね。 "myhelper.h" が入っておりませんでした。 ですので、\my ファイルの中に、"myhelper.h" を入れました。 そして実行したのですが、今度は違うエラーに・・・ ---------------------------------------------------------------- 1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました。 1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です。 1>my - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ---------------------------------------------------------------- たしかこれは、error LNK2019を解決すれば、 error LNK1120 が出なくなるエラーだったような気がする。 違うエラーが出たのでためしに、"myhelper.h" を抜いてみたけど 結果は同じでしたね・・・ 試しに新しく同じ内容のやつ作ってみましたけど結果は同じでしたね。 ん~操作ミスの可能性もあるなぁ~・・・ ちょっと今度は動画で出してみます。 http://www.dotup.org/uploda/www.dotup.org133155.wmv.html それでは・・・んんなんか申しわけないです(´・ω・`) 宜しくお願いします><

その他の回答 (3)

回答No.4

ん~・・・ リンクが始まってるっていう事は、とりあえず必要なコンパイルは出来た感じですね。コンパイルとリンクの意味は知ってるかな?コンパイルはオブジェクトを作り出す。オブジェクトは後でよろしく繋ぎ合わせなきゃいけないんだけど、この繋ぐ作業がリンクです。リンクエラーはコンパイルエラーの先なので、一歩進んでると考えてよいでしょう。myhelper.hを抜くなどして、戻らない方がいいかな。 で、LNK2019は、MyMainっていう関数が見つからないと怒っています。リンク対象になってるオブジェクトの中に、呼び出し元が要求するMyMainが入っていないのが、エラーの理由です。この点に注目して、解析してみてください。 ビルドが完了するまで付き合うのは、大変だなぁ。なにせ、コードも見れないし、そのコードって、書籍についてるヤツみたいだし、本は購入してるんだよね?書籍売りは、それで商売してるんだし、そこにサポートしてもらうのが、一番よさそうだけど。BBSやらサポートメールない?サポートない書籍だったら、残念本だ(泣。 表題の問題は解決したみたいだし、いったん、クローズしたら?bardfishさんは、的確なアドバイスしてくれてます。お礼、言ってね。今やってることは、力量に対してハードルが高そうだけど、きっと技術が付く事やってるから、がんばってね。

sakana20zb
質問者

お礼

むうぅう、むずかしそうですけど、自分の力で解決してみょうと 思います。それでもだめらな聞いて次に繋げられたらいいなぁ~ お礼は終わってからだと思い込んでた自分が・・・ ヤフー知恵袋癖なのか、それとも初めて使うせいか・・・ また何か縁がありましたらそのときは宜しくお願いします ありがとうございました

sakana20zb
質問者

補足

一歩進んでましたか。ほっとしました。 む、やはり戻らない方がいいのか。 MyMainっていう関数が見つからないっというのはわかってるんですけど ん~・・・本によると「名前の打ち間違いが原因」っとだけしか書いてないんですよね・・・ 本は購入してますね~。まずBBSは無いですねぇ・・・ サポートはあるんですけど(もっと詳しい操作法法を教えて欲しい →本に書かれている内容以上のことはお答えできません) っと書いてあるので期待できないかなぁーっと思いまして。 サイトで調べてわからなかったらサポートに行ってみます。 それでわかりにく等の返事だったらまたここに来ますね。 ですね。今回の error C1083 のエラーは解消できたので、いったん〆た方がいいですね。 最初に答えてくれたbardfishさんありがとうございます。 もちろん皆さんもアドバイス等ありがとうございます。 そうですねぇ・・・ハードル高いの選びました・・・ やれば覚えると思いましたがそう甘くはないですね。 がんばってみます!

回答No.2

こんにちは。 この問題は、コードの書き方等ではなく、コンパイル時の不具合といった物ですね。Cコンパイラに限らず、複数ファイルにわたってコードが書かれているとき、場所や読み込み順序や依存関係などによって、上手に動いてくれない事が多々あります。特にVisualStudioなどお便利統合環境だと、イロイロ困りそうです。ファイルはコンパイルやリンク時、定められたフォルダを定められた順序でサーチします。サーチパスと言います。C1083は、その手順では、「インクルードサーチパスからは、ファイルが見つけられなかったよぉ」という事を言っています。 基本的に、bardfishさんの言うとおりです。しかし、思い込みという事もありますので、詳細なエラーログを言ってもらえたら、答えに近づくかもしれません。たとえば、下記のように ---------- ここから ---------- コンパイルしています... test.c c:\documents and settings\owner\デスクトップ\helloworld\src\test.c(3) : fatal error C1083: include ファイルを開けません。'testxx.h': No such file or directory helloworld - エラー 1、警告 0 ---------- ここまで ---------- あと、プロジェクト、ソース、インクルードなどの格納されたフォルダやファイルのツリー構造もあれば、なおよしかもしれません。なお、ログやらフォルダ名やらに個人情報や秘匿情報があったりするなら、上手に伏せてくださいね。 ----- Magna 補足: インクルードサーチパスから特定のフォルダを除外する手法はあるのかな?ご存知のかた助けて。[ツール]->[オプション]から[VC++ディレクトリ][ディレクトリを表示するプロジェクト]->[ディレクトリを除外]なんてあるんだけど、微妙な感じ(笑)。

sakana20zb
質問者

お礼

的確なアドバイスありがとうございます。 それツリー等の提案などもありがとうございます。 補足の方も覚えてきたら気にしてみますw

sakana20zb
質問者

補足

こんにちは なるほど、詳細ログを出してみます。 ---------------------------------------------------------------- 1>mymain.cpp 1>c:\documents and settings\owner\my documents\visual studio 2008\projects\my\mymain.cpp(1) : fatal error C1083: include ファイルを開けません。'myhelper.h': No such file or directory ---------------------------------------------------------------- >ツリー構造もあれば こんな感じでしょうか? マイドキュメント - Visual Studio 2008 - Projects - my myの中に、mymain.h、myhelper.cpp、mymain.cpp が入ってます。 画像ファイル media、の中に、player01.bmp ちなみにこのプログラムは、画面にキャラを表示させるものです。 ---------------------------------------------------------------- 画像は一回貼ったのですが、変な風に引き伸びてしまったので、編集しようと思って削除したら投票できないのね(グー初めてなので あ、アップローダーの方に上げときます。http://www.dotup.org/uploda/www.dotup.org132187.jpg.html パスワードは無いです。 引き続きお願いします

  • bardfish
  • ベストアンサー率28% (5029/17765)
回答No.1

コンパイルの時に出たエラーですよね? >error C1083: include ファイルを開けません。'myhelper.h': No such file or directory ここに答えが書いてあります。 「myhelper.hファイルが見つからない。」 mymain.cppと同じところにmyhelper.hがありますか? #includeでインクルードファイルを指定するとき「<>」で囲むと環境変数'INCLUDE'で指定されたフォルダを参照にいき、「""」で囲んだときはソースと同じところを参照すると記憶しています。

sakana20zb
質問者

お礼

お礼が送れて申し訳ないです>< 初めてなもんで最後につけるものだとばかり・・・ と・・・とにかくありがとね><ノ アドバイス役にたったわよ!

sakana20zb
質問者

補足

>コンパイルの時に出たエラーですよね? そうです。コンパイルしたときに出るエラーです。 >mymain.cppと同じところにmyhelper.hがありますか? 同じファイル内にありますね。 >#includeでインクルードファイルを指定するとき「<>」 一応<>で試してたのですが、結果は同じですね。 本のとおりにやっているので「""」であってるはずです。 ちなみに本は「14歳からはじめるC言語わくわくゲームプログラミング」っていう本です。 http://www.rutles.net/books/217.html なおDXSDKは英語のやつですけど一応インストールしております。 それでは引き続きお願いします。

関連するQ&A

  • LNK2019: 未解決の外部シンボルのエラーが出る

    Microsoft Visual Studio 2008 Version 9.0.21022.8 RTM Microsoft .NET Framework Version 3.5 SP1 ---------------------------------------------------------------- 新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す) ----------------------------------------------------------------  プログラム  mymain.cpp #include "myhelper.h" #include "mymain.h" //自キャラのデータ Point2D g_jikipos = {40, 400}; //自キャラの座標 //画像ハンドル int g_jikiimage[11]; //色々なファイルの読み込み int LoadFiles(){ //画像ファイル読み込み if(LoadDivGraph("media\\player01.bmp", 11,11,1,64,64,g_jikiimage) == -1) return -1; return 1; }  mymain.h //他から呼び出させるMyMainの関数 void MyMain(); int LoadFiles();  myhelper.h(サンプルなので打ちミスはない) #include "DxLib.h" #include <limits.h> #include <math.h> //構造体宣言 //座標またはベクトルを記録する構造体 struct Vector{ float x,y; }; typedef Vector Point2D; //線を記録する構造体 struct Line2D{ Point2D startpos, endpos; float katamuki; //傾きをラジアン値で記録 Vector speed; //移動している場合は速度をセット }; //球体を記録する構造体 struct Ball2D{ Point2D position; float hankei; //半径 }; //四角形を記録する構造体 struct Rect2D{ Point2D lefttop; Point2D rightbottom; float width; float height; }; //ライブラリ関数 Point2D PosInView(Point2D in); int XInView(float inx); int YInView(float iny); void ScrollToLeft(float jikiposx); void ScrollToRight(float jikiposx); void ScrollToUp(float jikiposy); void ScrollToDown(float jikiposy); void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness); void DrawCircleInView(float x, float y, float r, int Color, int FillFlag); void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag, int *imgarray, int allframe, float fps); //ベクトル関数 Vector CreateVector(Vector in, float veclen); Vector AddVector(Vector v1, Vector v2); Vector SubVector(Vector v1, Vector v2); Vector AddVectorInFrameTime(Vector pos, Vector speed); Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel); Vector Normalize(Vector in); Vector RotateVector(Vector in, float radian); float VectorLengthSquare(Vector in); float DotProduct(Vector v1, Vector v2); float CrossProduct(Vector v1, Vector v2); void SetLine2DKatamuki(Line2D *in); void DrawLine2D(Line2D in, int Color, int Thickness); void DrawBall2D(Ball2D in, int Color, int Fill); //当たり判定関数 bool HitTestLineAndBall(Line2D linein, Ball2D ballin); bool IsPointAtLineFace(Line2D linein, Point2D ptin); bool HitTestLineAndLine(Line2D line1, Line2D line2); bool HitTestBallAndBall(Ball2D a, Ball2D b); bool HitTestPointAndBox(Rect2D rect, Point2D pt); //タイマー関数 void SetSimpleTimer(int idx, int time); int GetPassedTime(int idx); //グローバル変数 extern float g_frametime; extern Rect2D g_framerect; //画面領域(当たり判定) extern Point2D g_current_field_pos; //現在の左上座標 extern Rect2D g_stagesize; //ステージサイズ //定数宣言 const float ZEROVALUE = 1e-10f; const float PIE = 3.1415926f; const int SCROLL_LIMIT = 200; ----------------------------------------------------------------  エラー内容 1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました 1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です 1>my - エラー 2、警告 0 ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ---------------------------------------------------------------- 画像を貼り付けときます (見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html) 初心者なのでわかりやすくお願いします

  • 分割コンパイルについて

    現在分割コンパイルが分からずに苦戦しています。 下記のリストは構造体を使わなければコンパイラを通すことができましたが、 使うとなぜか通りません。 あれこれ試しましたがどうしても分かりません。 何がおかしいのでしょうか? *define.hで全てのファイルへの定義や宣言を行わせています。 ////////////// //Main.cpp ////////////// #include <stdio.h> #include <conio.h> #include "define.h" int main( void ){ Tmp[0].c = 15; printf("a: %d\n", a); printf("b: %d\n", b); printf("c: %d\n", Tmp[0].c); printf("NUM:%d\n", NUM); aaa(); bbb(); getch(); return 0; } ////////////////// // A.cpp ///////////////// #include <stdio.h> #include "define.h" void aaa( void ){ printf("a: %d\n", a); printf("b: %d\n", b); printf("c: %d\n", Tmp[0].c); printf("NUM:%d\n", NUM); } ////////////////// // B.cpp ///////////////// #include <stdio.h> #include "define.h" void bbb( void ){ printf("a: %d\n", a); printf("b: %d\n", b); printf("c: %d\n", Tmp[0].c); printf("NUM:%d\n", NUM); } ////////////////// // define.cpp ///////////////// #include "define.h" int a = 10; int b = 20; struct Parameter { int c; }; struct Parameter Tmp[NUM]; ////////////////// // define.h ///////////////// #define NUM 100 extern int a; extern int b; extern struct Parameter Tmp[NUM]; void aaa( void ); void bbb( void );

  • 初心者です。 コンパイルのエラー

    import java.awt.*; import javax.swing.*; public class R11Sample1 extends JFrame { Rect r1 = new Rect(Color.red, 100, 100, 80, 60); Rect r2 = new Rect(new Color (0.5f, 1f, 0f, 0.7f), 150, 120, 60, 90); Oval = new Oval(Color.blue, 60, 50, 10, 10); JPanel panel = new JPanel() { public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; r1.draw(g2); r2.draw(g2); } }; public R11Sample1() { setSize(400, 350); setDefaultCloseOperation(EXIT_ON_CLOSE); getContentPane().add(panel); } public static void main(String[] args) { new R11Sample1().setVisible (true); } } class Rect { Paint pat; int xpos, ypos, width, height; public Rect(Paint p, int x, int y, int w, int h) { pat = p; xpos = x; ypos = y; width = w; height = h; } public void draw(Graphics2D g) { g.setPaint(pat); g.fillRect(xpos-width/2, ypos-height/2, width, height); } } class Oval { Paint pat; int xpos, ypos, radius; public Oval(Paint p, int x, int y, int width, int height) { pat = p; xpos = x; ypos = y; width = w; height = h; } public void draw(Graphics2D g) { g.setPaint(pat); g.fillOval(xpos-width/2, ypos-height/2, width, height); } } これでコンパイルすると、 Identifierがありません といわれました。 どこを直せばいいのでしょうか。 また、全体的に間違ったところがあったら教えてください。

    • ベストアンサー
    • Java
  • c言語 クラスの中でvectorをクラスに使う

    C++の質問です。クラスの中でクラスをベクターで使うことはできますでしょうか? 画像にペイントしたものをラインごとに保存するプログラムを作っています。 わからないことは 1、ベクターで宣言したクラスの中身を個別にアクセスしたい。 たとえば linesのpointにはA lineにはBといようにアクセスしたいです。 説明がうまくできませんがアドバイスいただけたら助かります。 以下がソースになります。 =line.h========================================================= class paintedline{ public: //左上座標 Tvector2<int> point; //上下左右の保存 int top,botton,left,right; //線の格納 vector<Tvector3<int>> line; paintedline(); }; =linegroup.h========================================================= #include "icg.h" #include"line.h" class line_group{ float choosing_line; public: vector<paintedline> lines; line_group(); //線を保存--------------クリックしてから離すまで void saveline(Tvector2<int>point, vector<Tvector3<int>> line); //線を決定--------------クリックして線を決定 int return_line(Tcolor4<float> color); //線を移動 void move_line(Tvector2<int>pa, Tvector2<int>pb); //線を削除 void delete_line(); //すべての線をpaintedに合成 void synthesizing_lines(); }; =linegroup.cpp========================================================= #include"linegroup.h" #include"line.h" line_group::line_group(){ } //線を保存--------------クリックしてから離すまで void line_group::saveline(Tvector2<int>point, vector<Tvector3<int>> line){ //線の四隅を保存 for(int i=0; i<(int)line.size(); i++){ if(top>line.y) top = line.y; if(botton<line.y) botton = line.y; if(left>line.x) left = line.x; if(right<line.x) right = line.x; } //書かれた線を保存 lines.push_back(line) } //線を決定----------------クリックして線を決定 int line_group::return_line(Tcolor4<float> color){ choosing_line = color.r// rに格納したばんごうを決定 return choosing_line } //線を移動 void line_group::move_line(Tvector2<int>pa, Tvector2<int>pb,){ int x = abs(pa.x - pb.x); int y = abs(pa.y - pb.y); lines.at(n).point = (x,y); synthesizing_lines(); } //線を削除 void line_group::delete_line(){ cout<<"deleteするならdを押してください。"<<endl; lines.erace(choosing_line); }

  • C++のコンパイルエラーが

    おこります。 --------------------------------- #include <stdio.h> int main(void) { printf("hello, world\n"); return 0; } -------------------------------------- をコンパイルするのですができません。 以下のエラーが出ます。 --------------------------------------- エラー E2209 sample.c 1: インクルードファイル 'stdio.h' をオープンできない 警告 W8065 sample.c 5: プロトタイプ宣言のない関数 'printf' の呼び出し(関数 main ) *** 1 errors in Compile *** -------------------------------------

  • C言語 ソートについて

    プログラミング初心者です #include <stdbool.h> #include <stdio.h> void swap(char *a, char *b) { } bool is_at(char c) { } void justify(char line[], int n) { } int main(void) { char line[] = "a@b@@@c@@d@@@ef@@g"; size_t n = sizeof(line) - 1; justify(line, n); printf("%s\n", line); return 0; } 実行結果 abcdefg@@@@@@@@@@@ 上の雛形を用いてような文字列lineに含まれる@以外の文字を前に詰めていく。 ただし配列lineの要素を入れ替えること という問題なのですがいまいちよくわからないので答えを教えていただけると嬉しいです

  • C言語 ソートについて

    #include <stdbool.h> #include <stdio.h> void swap(char *a, char *b) { } bool is_at(char c) { } void justify(char line[], int n) { } int main(void) { char line[] = "a@b@@@c@@d@@@ef@@g"; size_t n = sizeof(line) - 1; justify(line, n); printf("%s\n", line); return 0; } 上の雛形を使って文字列lineに含まれる@以外の文字を文字列の前の方に詰めていくプログラミングを作るという問題を解いていたのですが下のプログラミングまでは出来たのですが最後のjustifyの部分がわかりません 良ければ解答をお願いします #include <stdbool.h> #include <stdio.h> void swap(char *a, char *b) { char temp = *a; *a = *b; *b = temp; } bool is_at(char c) { if(c == '@') { return true; } else { return false; } } void justify(char line[], int n) { for(int i=0;i<n-1;i++) { } } int main(void) { char line[] = "a@b@@@c@@d@@@ef@@g"; size_t n = sizeof(line) - 1; justify(line, n); printf("%s\n", line); return 0; }

  • Xcodeでのcのコンパイルエラーについて。

    Xcodeでc言語のコンパイル #include <stdio.h> int main(void) { printf("%d", 15 + 37); return(0); } をコンパイルすると ld: 2 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) となります。 いろいろ検索してみたのですが、こんな簡単なプログラムのエラーはのっていませんでした。 なにが問題なのでしょうか。 あと use -v ってのもどうやって使うのでしょうか。 よろしくおねがいします。

  • MinGWのg++で分割コンパイルエラー

    MinGW環境でC++の勉強を始めました。 簡単なサンプルのコンパイルをしてみたのですが、ソースファイルを一括してコンパイルすると問題ないのですが、個別にコンパイルしようとするとエラーがでてしまいまいます。 原因や対処法をご存じの方がいらっしゃいましたらご教示下さい。 一括でコンパイルすると問題なし bash-3.1$ g++ -Wl,--enable-auto-import main.cpp point.cpp -lstdc++ 個別にコンパイルしようとした場合 bash-3.1$ g++ -Wl,--enable-auto-import -o main.o main.cpp C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x16): undefined reference to `Point::Point()' C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x32): undefined reference to `Point::Point(int, int)' C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x3e): undefined reference to `Point::println()' C:\DOCUME~1\user\LOCALS~1\Temp\ccZrVmLp.o:main.cpp:(.text+0x4a): undefined reference to `Point::println()' collect2: ld returned 1 exit status ※ -Wl,--enable-auto-importは、他の警告を消すために入れました、無くても質問の問題に変化はありませんでした。 サンプルソース ---main.cpp--- #include<iostream> #include "point.h" using namespace std; int main(){ Point p1,p2(4,5); p1.println(); p2.println(); return 0; } ----------- ---point.h--- class Point { private: int x, y; static int count; public: Point(); Point( int, int ); void set( int, int ); void println(); }; ------------- ---point.cpp--- #include<iostream> #include"point.h" using namespace std; int Point::count; Point::Point(){ this->x = this->y = 0; ++count; } Point::Point(int ax, int ay){ this->x = ax; this->y = ay; ++count; } void Point::set( int ax, int ay ){ this->x = ax; this->y = ay; } void Point::println(){ cout << "Point(" << x << "," << y << ")" << endl; } ----------- bash-3.1$ g++ -v Using built-in specs. COLLECT_GCC=D:\MinGW\bin\g++.exe COLLECT_LTO_WRAPPER=d:/mingw/bin/../libexec/gcc/mingw32/4.5.0/lto-wrapper.exe Target: mingw32 Configured with: ../gcc-4.5.0/configure --enable-languages=c,c++,ada,fortran,obj c,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgo mp --disable-win32-registry --enable-libstdcxx-debug --enable-version-specific-r untime-libs --disable-werror --build=mingw32 --pref

  • コンパイルエラー

    コンパイルしても、12行目(printf("%d番目の整数を入力してください。"i+1);が、関数呼び出しに)がないとでます。でもどこが間違っているか分かりません。 教えてください。お願いします。 #include <stdio.h> int main(void) { int num; int sum=0; int i; for(i=0; i<10; i++){ printf("%d番目の整数を入力してください。"i+1); scanf("%d", &num); sum+=num; } printf("合計は、%dです。\n", sum); return(0); }

専門家に質問してみよう