首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对wgl -functions的引用未定义

对wgl -functions的引用未定义
EN

Stack Overflow用户
提问于 2015-10-12 16:46:30
回答 1查看 450关注 0票数 2

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

我使用MinGW进行编译。还有一个make文件。我尝试链接到:-lmingw32 -mwindows -lgdi32 -lopengl32,但没有解决这个问题。

我是#包括windows.h和gl.h,但它们都不包含wgl函数?我遗漏了什么?

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

代码语言:javascript
复制
    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;
    }

这是我的make文件:

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2015-10-12 18:09:17

你的问题出在这里:

$(DST):$(SRC) $(编译器)$(标志)$(路径) $(LIBS) -o $(DST) $(SRC)

通常,使用旧式GNU链接器时,必须在引用符号的文件后面的文件中引入符号。你把你的源文件放在最后,这通常会搞乱链接。尝试这样重新排序:

代码语言:javascript
复制
$(DST): $(SRC)
    $(CXX) -o $(DST) $(FLAGS) $(PATHS) $(SRC) $(LIBS)

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33076822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档