[日常] 如何在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工程文件,右击,选择添加库,选择外部库
[日常] 如何在Qt工程中链接glfw库,及解决大量的LINK 2019 _imp_xxxx错误_第1张图片

  1. 首先选择库文件->浏览,选择glfw3.lib
  2. 链接方式选择动态。
  3. 平台自选,我这里只勾选了Windows
  4. 一定要去掉为debug版本添加’d’作为后缀。因为如果勾选这个项,在使用Debug模式编译的时候,编译器会寻找glfwd.lib,自然是找不到的。

可以适当修改INCLUDEPATH +=和DEPENDPATH +=,如果你不知道这是什么,请忽略。

2.编写测试程序

我的glfw和glad的头文件放在工程目录的include目录下,并且在工程文件.pro里增加了

INCLUDEPATH += $$PWD/include

这样做的目的是,在写程序#include时,不需要再写include目录了。如果你不这样做,也可以写全路径。

#include 
#include 

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();

[日常] 如何在Qt工程中链接glfw库,及解决大量的LINK 2019 _imp_xxxx错误_第2张图片

你可能感兴趣的:(杂谈)