提示コードですが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)

0 コメント