参见英文答案 >
What is an undefined reference/unresolved external symbol error and how do I fix it?29个
我正在关注 this tutorial.我发现并制作/ make install’d glfw和glew完美(据我所知).但是,当我尝试编译示例代码时……
我正在关注 this tutorial.我发现并制作/ make install’d glfw和glew完美(据我所知).但是,当我尝试编译示例代码时……
#define GLEW_STATIC #include <GL/glew.h> #include <GLFW/glfw3.h> int main() { glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3); glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE); glfwWindowHint(GLFW_RESIZABLE,GL_FALSE); return 0; }
…使用他的链接器标志……
-lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi
…我收到以下错误:
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_init.c.o): undefined reference to symbol 'XF86VidModeQueryExtension' /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1: error adding symbols: DSO missing from command line
我谷歌的错误,有人建议添加-lXxf86vm.它摆脱了最初的错误,但增加了更多:
/usr/local/lib/libglfw3.a(x11_init.c.o): In function `initExtensions': x11_init.c:(.text+0x1b93): undefined reference to `XineramaQueryExtension' x11_init.c:(.text+0x1bad): undefined reference to `XineramaIsActive' /usr/local/lib/libglfw3.a(x11_init.c.o): In function `_glfwCreateCursor': x11_init.c:(.text+0x22ee): undefined reference to `XcursorImageCreate' x11_init.c:(.text+0x23c5): undefined reference to `XcursorImageLoadCursor' x11_init.c:(.text+0x23d5): undefined reference to `XcursorImageDestroy' /usr/local/lib/libglfw3.a(x11_monitor.c.o): In function `_glfwPlatformGetMonitors': x11_monitor.c:(.text+0x743): undefined reference to `XineramaQueryScreens'
我如何弄清楚我需要什么标志?如果重要,这就是我的makefile的结构:
CC = g++ COMPILER_FLAGS = -std=c++11 FILES = *.cpp LINKER_FLAGS = -lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi -lXxf86vm OBJS = *.o LINUX_BIN = HelloWindow #Compile(output into error.txt if there is an error),link,then run linux: $(CC) $(COMPILER_FLAGS) -c $(FILES) 2> "errors.txt" $(CC) $(COMPILER_FLAGS) $(OBJS) -o $(LINUX_BIN) $(LINKER_FLAGS) ./$(LINUX_BIN)
谢谢!
Derhass是对的.以下是我使用的标志:
-lGLEW -lglfw3 -lGL -lX11 -lXi -lXrandr -lXxf86vm -lXinerama -lXcursor -lrt -lm -pthread