gpt4 book ai didi

c++ - 未定义的 wgl 函数引用

转载 作者:行者123 更新时间:2023-11-30 05:37:54 25 4
gpt4 key购买 nike

我正在尝试通过 Windows API 创建 OpenGL 上下文。目前其他一切都很好,但我只是不知道如何链接正确的库以访问 wgl.. 函数。

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

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

下面是代码的 WM_CREATE 事件部分(这是唯一重要的事情)。

    case WM_CREATE:
{ PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags
PFD_TYPE_RGBA, //The kind of framebuffer. RGBA or palette.
32, //Colordepth of the framebuffer.
0, 0, 0, 0, 0, 0,
0,
0,
0,
0, 0, 0, 0,
24, //Number of bits for the depthbuffer
8, //Number of bits for the stencilbuffer
0, //Number of Aux buffers in the framebuffer.
PFD_MAIN_PLANE,
0,
0, 0, 0
};

// Get current handle to device context.
HDC hDc = GetDC(hWnd);

// Generate pixel format.
int wPf = ChoosePixelFormat(hDc, &pfd);

// Set pixel format.
SetPixelFormat(hDc, wPf, &pfd);

// OpenGL context
HGLRC GLc = wglCreateContext(hDc);

// Make it current.
wglMakeCurrent(hDc, GLc);

break;
}

这是我的制作文件:

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)

最佳答案

你的问题出在这里:

$(DST): $(SRC)
$(COMPILER) $(FLAGS) $(PATHS) $(LIBS) -o $(DST) $(SRC)

一般来说,对于旧式 GNU 链接器,符号必须在引用它们的文件之后引入。您的 文件放在最后,这通常会搞乱链接。尝试以这种方式重新排序:

$(DST): $(SRC)
$(CXX) -o $(DST) $(FLAGS) $(PATHS) $(SRC) $(LIBS)

顺便说一句:我们从不在 makefile 中调用变量“COMPILER”,因为可能有许多不同的编译器用于单个项目。保存 C++ 编译器可执行文件名称的变量通常称为 CXX(C 编译器在 Makefile 中由变量 CC 命名)。

关于c++ - 未定义的 wgl 函数引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33076822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com