欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-14 08:05:30
...

最近在上计算机图形学的课。个人并不喜欢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. 首先选择库文件->浏览,选择glfw3.lib
  2. 链接方式选择动态。
  3. 平台自选,我这里只勾选了Windows
  4. 一定要去掉为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();

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