this tutorial에 대한 opengl 프로젝트를 만들려고하는데 프로그램을 컴파일 할 수 없습니다.glfw3에서 정의되지 않은 참조를 윈도우에서 g ++ 사용
여기서의 현재 문제는 모든 glfw 함수는 정의되지 않지만 glfw3.h에 존재한다는 점입니다.
glfw3 파일은 the glfw download page (x64 버전)입니다.
make
=== SRC ===
src/glad.c src/main.cpp
=== OBJ ===
bin/glad.o bin/main.o
===== Creating file bin/glad.o ===
C:/cygnus/cygwin-b20/H-i586-cygwin32/bin/mkdir -p bin/
C:/MinGW/bin/g++ -I./include -o bin/glad.o -c src/glad.c
===== Creating file bin/main.o ===
C:/cygnus/cygwin-b20/H-i586-cygwin32/bin/mkdir -p bin/
C:/MinGW/bin/g++ -I./include -o bin/main.o -c src/main.cpp
C:/MinGW/bin/g++ -L./libs -o build/program.exe bin/glad.o bin/main.o -lglfw3
bin/main.o:main.cpp:(.text+0xc): undefined reference to `glfwInit'
collect2.exe: error: ld returned 1 exit status
make: *** [program.exe] Erreur 1
나는 다음과 같은 MAIN.CPP 파일을 사용하고 있습니다 :
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
int main(int argc, char** argv){
glfwInit();
return 0;
}
을 그리고 다음 메이크 : 여기
은 로그의 복사본입니다CXX = C:/MinGW/bin/g++
FAKEPATH = C:/cygnus/cygwin-b20/H-i586-cygwin32/bin/
CXXFLAGS = -W -Wall -ansi -Wno-deprecated
LDLIBS = -lglfw3
TARGET = program.exe
LIB_DIR = -L./libs
INC_DIR = -I./include
SRC = $(shell $(FAKEPATH)find src/ -type f \(-iname \*.cpp -o -iname \*.c \))
OBJ = $(patsubst src/%,bin/%,$(addsuffix .o, $(basename $(SRC))))
all: directories $(TARGET)
test:
echo $(FAKEPATHEXISTS)
directories:
@$(FAKEPATH)echo === SRC ===
@$(FAKEPATH)echo $(SRC)
@$(FAKEPATH)echo === OBJ ===
@$(FAKEPATH)echo $(OBJ)
@$(FAKEPATH)mkdir -p bin
@$(FAKEPATH)mkdir -p build
compileAndRun: all
build/$(TARGET)
$(TARGET): $(OBJ)
$(CXX) $(LDFLAGS) $(LIB_DIR) -o build/[email protected] $^ $(LDLIBS)
bin/%.o: src/%.c
@$(FAKEPATH)echo ===== Creating file [email protected] ===
$(FAKEPATH)mkdir -p $(dir [email protected])
$(CXX) $(INC_DIR) -o [email protected] -c $<
bin/%.o: src/%.cpp
@$(FAKEPATH)echo ===== Creating file [email protected] ===
$(FAKEPATH)mkdir -p $(dir [email protected])
$(CXX) $(INC_DIR) -o [email protected] -c $<
clean:
@$(FAKEPATH)rm -rf bin/
cleaner: clean
@$(FAKEPATH)rm -rf build/
그리고 마지막으로 내 파일은 다음과 같이 정렬됩니다.
gG ++에는 MinGW를, Linux 명령에는 cygwin을 사용하고 있습니다.
도움이나 시도는 정말 감사하겠습니다! (나는 정말로 문제가 어디에서 왔는지 모른다) 고마워!
참고 : 이미 나는이에 대한 해결책을 발견 (여러 스택 오버플로 질문 포함) 작업 솔루션
libs 조회 경로가 맞습니까? ./libs 대신 ../libs가 필요합니까? – florgeng
LIB_DIR을 -L ../libs로 설정할 때 "찾을 수없는 -lglfw3"이 나타납니다. –