glfw code not 运行 编译无错后跳过

glfw code not running and skipping after compiling without errors

我正在尝试学习 C 中的 glfw 库。我已经从他们的官方网站安装了 glfw 预编译二进制文件。我已将 32 位库从预编译的二进制 zip 文件移动到我的 mingw-gcc 的 lib 文件夹,并将包含文件从 zip 文件移动到 mingw-gccinclude 文件夹.我正在尝试使用库和 c 制作 a window。我使用 vscode 作为我的编辑器。这是我的代码:

#include <stdio.h>
#include <windows.h>
#include <glad/glad.h>
#include <GLFW/glfw3.h>

int main() {
  printf("Hello World!\n"); //test line
  GLFWwindow * window;
  if (!glfwInit) {
    printf("glfw3 initialization failed");
    return -1;
  } else {
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);

    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window) {
      printf("Could not create window.");
      glfwTerminate();
      return -1;
    } else {
      glfwMakeContextCurrent(window);
      while (!glfwWindowShouldClose(window)) {
        glfwSwapBuffers(window);
        glfwPollEvents();
      }
      glfwDestroyWindow(window);
      glfwTerminate();
      return 0;

    }

  }
}

我正在使用以下命令编译我的代码:

gcc main.c -lglfw3dll -lopengl32

程序编译没有任何错误,但是当我运行编译.exe时,没有任何反应。我什至尝试在代码 运行s 之前打印 hello world,但即使那样也不会打印。发生了什么事,我该如何解决?

编辑:我通过将 glfw 库添加到我的系统路径解决了这个问题。现在一切正常

你正在做:

if (!glfwInit)

这只是检查 glfwInit 地址 是否为 non-zero。

不是call/invoke它。

调用它,您需要:

if (! glfwInit())

更新:

the code still is doing nothing. it is still not printing the test hello world – The Parallax

glfwCreateWindow 调用中的 "Hello World" 只是 设置了 window 标题。

第一个问题是:window 是否出现在屏幕上?也就是说,代码什么都不做...?

到底是什么意思?

我在你的代码中没有看到任何绘图调用。

您的代码与来自 https://www.glfw.org/documentation.html#example-code 的示例代码相似,有一些小的例外,但不完全相同。

在link中有:

/* Render here */
glClear(GL_COLOR_BUFFER_BIT);

在循环的顶部。

AFAICT,这会将缓冲区清除为背景色。

您可以 need/want 添加一些绘图调用以放置一个矩形(例如) glClear 调用之后。

否则,你可能会得到window,但里面什么也没有。

这是一步一步的教程:https://www.glfw.org/docs/3.3/quick.html

它有更多 complete/extensive 示例代码。我将使用两个 link 中的代码作为模型。

我通过将 glfw 库添加到我的系统路径解决了这个问题。现在一切正常