链接GLFW库错误[重复]

问题描述 投票:-2回答:1

好吧,我试着开始使用GLFW,但是当我尝试链接库时,我遇到了一些麻烦。

我正在尝试编译GLFW页面的第一个示例。

#include <GLFW/glfw3.h>

int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

编译器

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp

在我的项目文件夹中

glfw3.dll

libglfw3dll.a

当我尝试编译它时,我得到此链接器错误

未定义的引用`__imp_glClear'

我究竟做错了什么?

/ ----------------------编辑-------------------------- - /

对不起,我忘了说一些事情,这可以澄清我的情况......

我正在使用Windows 10,64位。

编译器 - > Mingw二进制文件 - >从官方页面下载

我试图用静态库编译代码,我得到了很多未定义的引用。

g++ -L. -lopengl32 -lglu32 -lgdi32 -lglfw3  main.cpp

然后,我尝试使用动态库glfw.dll。我还链接了glfwdll.a库并在包含头之前定义了GLFW_DLL宏。

g++ -L. libglfw3dll.a -lglfw3 -lopengl32 main.cpp

使用最后一个选项,我只得到1个未定义的引用

undefined reference to `__imp_glClear'

我知道这是来自opengl32库。

我也明白我错过了一些我找不到的东西。

我来了,你能帮我一把,告诉我我错过了什么吗?

谢谢!

c++ opengl glfw
1个回答
0
投票

请阅读手册GLFW: Building applications

贝娄被引用为GNU环境的部分。如果您开发Windows应用程序,也可以在那里找到合适的说明。

GLFW支持pkg-config,并且在构建GLFW库并随其安装时生成glfw3.pc pkg-config文件。 pkg-config文件描述了使用库所需的所有必需的编译时和链接时标志和依赖项。更新它们或系统之间有所不同时,您将自动获得正确的数据。

使用静态版本的GLFW库时,典型的编译和链接命令行可能如下所示:

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --static --libs glfw3`

如果您使用的是GLFW库的共享版本,只需省略--static标志即可。

cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3`

您还可以使用glfw3.wc文件,而无需先使用PKG_CONFIG_PATH环境变量进行安装。

env PKG_CONFIG_PATH=path/to/glfw/src cc `pkg-config --cflags glfw3` -o myprog myprog.c `pkg-config --libs glfw3`

依赖项不包括OpenGL或GLU,因为GLFW在运行时加载任何OpenGL,Op​​enGL ES或Vulkan库,并且不使用GLU。在OS X上,GLU内置于OpenGL框架中,因此如果您需要GLU,则无需执行任何额外操作。如果你需要GLU并使用Linux或BSD,你应该添加glu pkg-config包。

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --libs glfw3 glu`

注意

GLU已被弃用,不应在新代码中使用,但某些遗留代码需要它。

如果您使用的是GLFW库的静态版本,请确保不要与GLU静态链接。

cc `pkg-config --cflags glfw3 glu` -o myprog myprog.c `pkg-config --static --libs glfw3` `pkg-config --libs glu`
© www.soinside.com 2019 - 2024. All rights reserved.