質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

819閲覧

ヘッダーに宣言、ソースに定義を記述した関数を呼ぶと未定義の外部参照になるエラーの原因が知りたい

退会済みユーザー

退会済みユーザー

総合スコア0

参照

参照は、プログラミングにおいて変数や関数といったメモリ空間上での所在を指示するデータのことを指します。その中にはデータ自体は含まれず、他の場所にある情報を間接的に指示するプログラムです。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/09/16 06:18

提示コードですが以下のヘッダーとソースファイルに分けているのですがこれを使うソースファイルにインクルードして使おうとすると未定義の参照というエラーがでるのですが何が原因なのでしょうか?

$ make g++ obj/Fps.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor /usr/bin/ld: obj/Main.o: in function `main': Main.cpp:(.text+0x62): undefined reference to `InitColorPairs()' /usr/bin/ld: obj/Screen.o: in function `Screen::Screen()': Screen.cpp:(.text+0x1cc): undefined reference to `GetColorNum(int, int)' /usr/bin/ld: obj/Screen.o: in function `Screen::UpdateScreen()': Screen.cpp:(.text+0x331): undefined reference to `GetColorNum(int, int)' /usr/bin/ld: obj/Screen.o: in function `Screen::Delete(int, int)': Screen.cpp:(.text+0x47b): undefined reference to `GetColorNum(int, int)' /usr/bin/ld: obj/Edit.o: in function `Edit::KeyInput()': Edit.cpp:(.text+0x1bc): undefined reference to `GetColorNum(int, int)' /usr/bin/ld: obj/Edit.o: in function `Edit::MouseInput()': Edit.cpp:(.text+0x348): undefined reference to `GetColorNum(int, int)' /usr/bin/ld: obj/Edit.o:Edit.cpp:(.text+0x3f6): more undefined references to `GetColorNum(int, int)' follow collect2: error: ld returned 1 exit status make: *** [Makefile:9: AAEditor] エラー 1

cpp

1#ifndef ___COLOR_HPP_ 2#define ___COLOR_HPP_ 3 4/*########################################################### 5 # 色 6#############################################################*/ 7 8int GetColorNum(int fg, int bg); 9short CursColor(int fg); 10void InitColorPairs(); 11void SetColor(int fg, int bg); 12void UnSetColor(int fg, int bg); 13void SetAttrib(int att); 14void UnSetAttrib(int att); 15#endif 16

cpp

1#include "../header/Color.hpp" 2#include "../lib/ncurses/include/curses.h" 3 4 5int ColorNum(int fg, int bg) 6{ 7 int B, bbb, ffff; 8 9 B = 1 << 7; 10 bbb = (7 & bg) << 4; 11 ffff = 7 & fg; 12 13 return (B | bbb | ffff); 14} 15 16short CursColor(int fg) 17{ 18 switch (7 & fg) 19 { /* RGB */ 20 case 0: /* 000 */ 21 return (COLOR_BLACK); 22 case 1: /* 001 */ 23 return (COLOR_BLUE); 24 case 2: /* 010 */ 25 return (COLOR_GREEN); 26 case 3: /* 011 */ 27 return (COLOR_CYAN); 28 case 4: /* 100 */ 29 return (COLOR_RED); 30 case 5: /* 101 */ 31 return (COLOR_MAGENTA); 32 case 6: /* 110 */ 33 return (COLOR_YELLOW); 34 case 7: /* 111 */ 35 return (COLOR_WHITE); 36 } 37 38 return -1; 39} 40 41void InitColorPairs() 42{ 43 int fg, bg; 44 int colorpair; 45 46 for (bg = 0; bg <= 7; bg++) 47 { 48 for (fg = 0; fg <= 7; fg++) 49 { 50 colorpair = GetColorNum(fg, bg); 51 InitPair(colorpair, CursColor(fg), CursColor(bg)); 52 } 53 } 54} 55 56void SetColor(int fg, int bg) 57{ 58 attron(COLOR_PAIR(GetColorNum(fg, bg))); 59} 60 61void SetAttrib(int att) 62{ 63 attron(att); 64} 65 66void UnSetColor(int fg, int bg) 67{ 68 attroff(COLOR_PAIR(GetColorNum(fg, bg))); 69} 70 71void UnSetAttrib(int att) 72{ 73 attroff(att); 74}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2021/09/16 06:30

g++ コマンドラインとエラーメッセージから明らかやと思うんだけど...ホントにわからんのですか? 原因わかるけど対策わからんのですか? それともエラーのたんびに質問してるんですか?
退会済みユーザー

退会済みユーザー

2021/09/16 06:44

過去の質問がずっとエラー分析やデバッグ丸投げが基本スタイルだから、もう一生直らんでしょこの人。
退会済みユーザー

退会済みユーザー

2021/09/16 06:47

すいませんでした。自分はしっかり思考しているのですがどうもわからないので質問しています。 正直時間が勿体ないので自分の力でどうにかなりたのですがコツとかあるのでしょうか?
退会済みユーザー

退会済みユーザー

2021/09/16 06:55 編集

> 正直時間が勿体ないので自分の力でどうにかなりたのですがコツとかあるのでしょうか? 安易に質問サイトを使うのをやめて、時間掛かっても自分で考えて問題解決するしかないのでは?人に頼ってばかりだから何も身に付かないし、同じような質問を繰り返す。本当に思考してるなら、普通は一日に3回も4回も質問しない。
退会済みユーザー

退会済みユーザー

2021/09/16 07:00

と、書いてるうちにもう次の質問してるし…だめだこりゃ。
episteme

2021/09/16 07:36

> 自分はしっかり思考しているのですがどうもわからないので質問しています。 丸投げってことは思考してないやん。
guest

回答1

0

ベストアンサー

g++ obj/Fps.o obj/Scene.o obj/Entry.o obj/Main.o obj/Screen.o obj/Log.o obj/Edit.o -l ncurses -o AAEditor

おそらく Color.o というファイル名のオブジェクトが入るべきですね。Makefileが間違っているのでしょう。

投稿2021/09/16 06:22

int32_t

総合スコア20659

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問