C++ 对wgl-函数的未定义引用
我正在尝试通过windows API创建OpenGL上下文。 现在其他一切都很好,但我就是不知道如何连接到正确的库来访问wgl。。功能 我使用MinGW进行编译。和一个制作文件。 我已尝试链接到: -lmingw32-mwindows-lgdi32-lopengl32 没有运气解决这个问题 我包括windows.h和gl.h,但它们都不包含wgl函数? 我错过了什么 下面是代码的WM_创建事件部分(这是唯一重要的事情) 这是我的制作文件:C++ 对wgl-函数的未定义引用,c++,opengl,C++,Opengl,我正在尝试通过windows API创建OpenGL上下文。 现在其他一切都很好,但我就是不知道如何连接到正确的库来访问wgl。。功能 我使用MinGW进行编译。和一个制作文件。 我已尝试链接到: -lmingw32-mwindows-lgdi32-lopengl32 没有运气解决这个问题 我包括windows.h和gl.h,但它们都不包含wgl函数? 我错过了什么 下面是代码的WM_创建事件部分(这是唯一重要的事情) 这是我的制作文件: CXX = g++ SRC = engine.cpp o
CXX = g++
SRC = engine.cpp os.cpp
DST = build/engine.exe
PATHS = -L c:\MinGW\lib -I c:\MinGW\include
FLAGS = -mwindows
LIBS = -lmingw32 -opengl32
$(DST): $(SRC)
$(CXX) -o $(DST) $(FLAGS) $(PATHS) $(SRC) $(LIBS)
你的问题在于: 通常,对于旧式GNU链接器,必须在引用符号的文件之后的文件中引入符号。你的源文件是在最后一个,这通常会弄乱链接。尝试按以下方式重新排序:
$(DST): $(SRC)
$(CXX) -o $(DST) $(FLAGS) $(PATHS) $(SRC) $(LIBS)
顺便说一句:我们从不在makefile中调用变量“COMPILER”,因为可能有许多不同的编译器用于单个项目。持有C++编译器可执行名称的变量通常称为“代码> CXX/CODE >(C编译器是由变量<代码> cc>代码)命名的。请显示完整的链接器调用。我使用的是我在帖子中写的确切顺序。是的,但这只是故事的一半。整个链接器调用都很重要;这意味着我们还必须了解如何以及在何处传递要链接的对象文件(或者如果您直接编译为可执行文件),在该行的何处有源文件。此外,
-mwindows
没有意义。如果删除-mwindows,则会得到未定义的引用“ChoosePixelFormat@8“如果我加上它,我再也不会犯这个错误了。谢谢你提供的makefile提示。我知道makefile中使用的变量。我现在就这样说,只是为了我自己的目的(学习以便我的大脑能够想象它们在哪里)。遗憾的是,这些修复没有对wgl问题产生影响:(
$(DST): $(SRC)
$(COMPILER) $(FLAGS) $(PATHS) $(LIBS) -o $(DST) $(SRC)
$(DST): $(SRC)
$(CXX) -o $(DST) $(FLAGS) $(PATHS) $(SRC) $(LIBS)