好吧,我试着开始使用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&#39;
的未定义引用我做错了什么?
/ ----------------------编辑-------------------- -------- /
抱歉,我忘了说一些事情,这可以澄清我的情况......
我正在使用Windows 10,64位。
编译器 - &gt; MinGW的 二进制文件 - &gt;从官方页面下载
我尝试用静态库编译代码,我得到了很多未定义的引用。
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库。
我也明白,我错过了一些我无法找到的东西。
我再来一次,你能帮我一把,告诉我我错过了什么吗?
谢谢!
答案 0 :(得分:0)
请阅读手册GLFW: Building applications
Bellow被引用为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.pc文件,而无需先使用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,OpenGL 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`