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

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

新規登録して質問してみよう
ただいま回答率
86.12%
g++

g++はGNUコンパイラコレクション(gcc)のC++コンパイラーです。

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

受付中

.libファイルを指定しても未定義の参照というコンパイルエラーが出る原因が知りたい。

退会済みユーザー

退会済みユーザー

総合スコア0

g++

g++はGNUコンパイラコレクション(gcc)のC++コンパイラーです。

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。

2回答

0リアクション

0クリップ

497閲覧

投稿2022/09/11 04:15

提示コードですがmakeファイルのコメント部はubuntuのコンパイルで使っていたものです、また自作ライブラリファイル(.lib)を指定しているのにも関わらず未定義の参照というエラーが出る原因が知りたいです。

参考サイト:https://kaworu.jpn.org/cpp/g++#.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.92.E3.83.AA.E3.83.B3.E3.82.AF.E3.81.99.E3.82.8B

環境

OS windows 10
利用ライブラリ
opengl
glfw
glew
freetype
stb

コンソールログ
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: obj/Player.o:Player.cpp:(.text+0xcc1): undefined reference to `FrameWork::Shader::setUniformMatrix4x4fv(char const*, glm::mat<4, 4, float, (glm::qualifier)0>)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: obj/Player.o:Player.cpp:(.text+0xd4c): undefined reference to `FrameWork::Sprite::Render(glm::mat<4, 4, float, (glm::qualifier)0>)' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: obj/Player.o:Player.cpp:(.text+0xd70): undefined reference to `FrameWork::Shader::setDisable()' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: obj/Player.o:Player.cpp:(.text+0xdf2): undefined reference to `FrameWork::GameObject::~GameObject()' c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: obj/Player.o:Player.cpp:(.rdata$_ZTV6Player[__ZTV6Player]+0x10): undefined reference to `FrameWork::GameObject::Collision(std::shared_ptr<FrameWork::GameObject>)' collect2.exe: error: ld returned 1 exit status make: *** [program] エラー 1
実行側

make

PRG :=program SRC_DIR :=src OBJ_DIR :=obj DEP_DIR :=obj DEP :=$(wildcard $(DEP_DIR)/*.d) SRC :=$(wildcard $(SRC_DIR)/*.cpp) OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC)))) $(PRG): $(OBJ) # $(CXX) $^ -o $@ -L./lib -lFrameWork -ldl -lGLESv2 -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11 $(CXX) $^ -o $@ -lopengl32 -lglew32 -L./lib/libFrameWork $(OBJ_DIR)/%.o: src/%.cpp # $(CXX) -c -MMD -MP $< -o $@ -I./../src -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/stb/deprecated $(CXX) -c -MMD -MP $< -o $@ -IC:\ -I./../src -IC:\glew\include -IC:\glfw\include -include $(DEP) clean: rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d $(PRG)
FrameWork側

make

PRG :=libFrameWork.lib #PRG :=libFrameWork.a SRC_DIR :=src OBJ_DIR :=obj DEP_DIR :=obj DEP :=$(wildcard $(DEP_DIR)/*.d) SRC :=$(wildcard $(SRC_DIR)/*.cpp) OBJ :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC)))) $(PRG): $(OBJ) # $(CXX) $^ -o $@ -ldl -lGLESv2 -lGLU -lGL -lglfw3 -pthread -lGL -lGLEW -lfreetype -ldl -lX11 ar rcs test/lib/$@ $(OBJ) $(OBJ_DIR)/%.o: src/%.cpp # $(CXX) -c -MMD -MP $< -o $@ -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/stb/deprecated $(CXX) -c -MMD -MP $< -o $@ -IC:\ -IC:\glew\include -IC:\glfw\include -include $(DEP) clean: rm -f ./$(OBJ_DIR)/*.o *.out ./$(OBJ_DIR)/*.d $(PRG)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

2022/09/12 05:52

こちらの質問が他のユーザーから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

g++

g++はGNUコンパイラコレクション(gcc)のC++コンパイラーです。

make

make は、ビルド作業を自動化するツールです。さまざまなファイルの最終変更時刻を比較し、従属するファイルよりも「ターゲット」のファイルが古いことがわかったときユーザーが設定していた命令を実行する事が可能です。