[日常] 如何在Qt工程中链接glfw库,及解决大量的LINK 2019 _imp_xxxx错误
最近在上计算机图形学的课。个人并不喜欢VS,决定用Qt Creator作为IDE。
下载、make、编译了glfw库,得到了glfw3.lib
新建了一个Qt Console Application
需要注意,如果make时选择的平台是VS并且使用了VS编译库,那么,Qt项目的编译套件(Kit)也应该选择VS,VS的库和MinGW的库大概率不通用。
1.添加glfw3库文件
打开.pro工程文件,右击,选择添加库,选择外部库
- 首先选择库文件->浏览,选择glfw3.lib
- 链接方式选择动态。
- 平台自选,我这里只勾选了Windows
- 一定要去掉为debug版本添加’d’作为后缀。因为如果勾选这个项,在使用Debug模式编译的时候,编译器会寻找glfwd.lib,自然是找不到的。
可以适当修改INCLUDEPATH +=和DEPENDPATH +=,如果你不知道这是什么,请忽略。
2.编写测试程序
我的glfw和glad的头文件放在工程目录的include目录下,并且在工程文件.pro里增加了
INCLUDEPATH += $$PWD/include
这样做的目的是,在写程序#include时,不需要再写include目录了。如果你不这样做,也可以写全路径。
#include <glad/glad.h>
#include <GLFW/glfw3.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
return 0;
}
点击Debug编译,不出意外你会收到108个Error,而且基本上是_imp_xxxx开头的。
3.添加Windows的库文件
上一步的错误困惑了我很久很久,因为我一直觉得是glfw的问题,然后不断搜索和尝试,未果,结果在看到Link problem when compiling from terminal - support - GLFW的时候灵机一动,查了一下,这些函数不是glfw的,是Windows的。
解决方法:打开.pro工程文件,在LIBS +=
后面写上-lgdi32 -lopengl32 -lkernel32 -luser32 -lshell32
,最后我的.pro看起来是这样的
win32: LIBS += -lgdi32 -lopengl32 -lkernel32 -luser32 -lshell32 -L$$PWD/libs/ -lglfw3
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/libs
再次编译就没问题了。
再写上创建窗口的代码,终于能看见黑窗口了。
GLFWwindow *window = glfwCreateWindow(1280, 720, "Playground", NULL,
NULL);
if (!window) {
cout << "Window create failed." << endl;
glfwTerminate();
}
glfwMakeContextCurrent(window);
bool ret = gladLoadGLLoader((GLADloadproc)glfwGetProcAddress);
if (!ret) {
cout << "GLAD init failed" << endl;
}
while (!glfwWindowShouldClose(window)) {
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
上一篇: OpenGL+Xcode环境配置
下一篇: OpenGL学习笔记--配置VS环境