Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对wgl-函数的未定义引用_C++_Opengl - Fatal编程技术网

C++ 对wgl-函数的未定义引用

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

我正在尝试通过windows API创建OpenGL上下文。 现在其他一切都很好,但我就是不知道如何连接到正确的库来访问wgl。。功能

我使用MinGW进行编译。和一个制作文件。 我已尝试链接到: -lmingw32-mwindows-lgdi32-lopengl32 没有运气解决这个问题

我包括windows.h和gl.h,但它们都不包含wgl函数? 我错过了什么

下面是代码的WM_创建事件部分(这是唯一重要的事情)

这是我的制作文件:

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)