当前位置: 首页 > 知识库问答 >
问题:

glfwCreateWindow(..)在Visual Studio中返回null

翟浩穰
2023-03-14

我正在使用GLFW,只想打开一个空窗口。

我下载了适用于Windows 32的GLFW。创建了一个空控制台项目并编写了以下代码

#include "main.h"
#pragma comment (lib, "glfw3dll")
#pragma comment (lib, "OpenGL32")

#define GLFW_DLL

#include <glfw3.h>
#include <chrono>
#include <iostream>

using namespace std::chrono;


GLFWwindow* window;

bool running = true;


bool initialise(){
return true;
}

void update(double deltaTime){

}

void render(){

}



int main(int argc, char **argv) {

if (!glfwInit)
    return -1;

window = (glfwCreateWindow(800, 600, "Hello World", nullptr, nullptr));

if (window == nullptr){
    glfwTerminate();
    return -1;
}

glfwMakeContextCurrent(window);

if (!initialise()){
    glfwTerminate();
    return -1;
}

auto currentTimeStamp = system_clock::now();
auto prevTimeStamp = system_clock::now();

while (running)
{
    currentTimeStamp = system_clock::now();

    auto elapsed = duration_cast<milliseconds>(currentTimeStamp - prevTimeStamp);
    auto seconds = double(elapsed.count()) / 1000.0;

    update(seconds);

    render();

    glfwPollEvents();

    prevTimeStamp = currentTimeStamp;

}

glfwTerminate();

return -1;
}

我认为我正确地添加了库和头文件。但是每次程序在glfwCreateWindow(..)函数,因为这个函数返回null。

有人能帮我吗?

共有1个答案

周和志
2023-03-14
if (!glfwInit)
    return -1;

我不确定为什么glfwInit会是NULL,除非在DLL加载期间发生了一些真正可怕的事情。

尝试调用glfwInit()

if( !glfwInit() )
    return -1;
 类似资料:
  • 我在Xcode10.0 Mac OS 10.14上用glew2.1和glfw3.2做OpenGL作业,但是glfwCreateWindow总是返回NULL。代码如下: 如果我删除4 glfwWindowHint句子,将显示一个窗口,但它是黑暗的,并且Xcode控制台将抛出一个错误:设置为窗口的第一响应者,但它在另一个窗口中((空))!当视图被释放时,这最终会崩溃。第一个响应程序将设置为 nil。

  • 在对代码运行了几次测试之后,我已经确定GLFW和GLEW都已成功初始化,但是当我尝试创建一个对象以用于GLFW函数时,函数返回一个。为什么会这样,我该如何解决?这是我的代码:

  • 当我在Linux上调用时,它返回。相同的代码适用于Windows,并且我安装了适当的图形驱动程序。如何确定它返回 null 的原因? 编辑:结果它返回了null,因为我要求的OpenGL版本显然在我的上网本上不可用。这解决了我的问题,但没有真正回答我的问题。

  • VisualStudio (GitHub Extension for Visual Studio) 是 GitHub 的 Visual Studio 插件。 主要功能: 连接 GitHub 一键 clone 创建新库 发布本地库

  • 问题内容: 我正在尝试在Java程序中阅读标准输入。我期望一系列数字后跟换行符,例如: 当通过eclipse内置控制台提供输入时,一切都会顺利进行。但是,使用Windows命令行时,程序将输出: 我的代码是: 有什么线索吗? 问题答案: 得到a 表示相关对象已到达EOF(文件末尾),或者换句话说,它们无法再获得任何标准输入。现在,您的代码明显的问题是: 的每个方法调用都会创建一个 新的 。 每个这

  • 在我开始之前,我读过类似的文章,但它们对我不起作用。 正如我在标题中解释的那样,当我单击肯定按钮(在这种情况下为“确定”)时,我会得到一个NPE。如果有人能指出我做得不正确,那就太好了!下面是我的设置的抽象版本