c++ 应用程序在glfwCreateWindow()处静默崩溃

hs1rzwqc  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(178)

我正在使用GLFW/GLEW制作一个用于窗口和图形的C++应用程序:

#include <GLEW/glew.h>
#include <GLFW/glfw3.h>

int main()
{
    // init glfw
    if (!glfwInit())
    {
        std::cout << "GLFW init failed!: " << std::endl;
    }
    // set up window hints
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    // APP FAILS ON THIS LINE
    GLFWwindow* window = glfwCreateWindow(320, 180, "Test Window!", NULL, NULL);
    // verify window is valid
    if (window == NULL)
    {
        std::cout << "Failded to create GLFW window" << std::endl;
        glfwTerminate();
        std::cin.get();
    }
    glfwMakeContextCurrent(window);

    // init GLEW now that we have a current context (window)
    GLenum err = glewInit();
    if (GLEW_OK != err)
    {
        std::cout << "Failed to init GLEW: " << glewGetErrorString(err) << std::endl;
        abort();
    }
}

这在我的系统上运行得很好,但是我试图把它分发给我的朋友,因为我最终会喜欢分享这个应用程序。我使用的是visual studio的guide on distributing,它有在我朋友的机器上运行所需的dll。但是,在我的initialize函数中,这个应用程序被杀死了,没有一个glfw错误回调或任何东西。
我朋友的机器是一台windows10笔记本电脑,采用Intel UHD Graphics 620。安装的opengl版本是4.5。
我已经试着验证安装的opengl版本,它比我的应用程序要求的要高。
我已经尝试使用DependenciesDependency Walker检查我的应用程序中是否存在任何丢失的dll,所有这些都显示没有任何问题。
我将GLFW错误回调设置为垃圾邮件控制台(如果有问题),并且在我朋友的计算机上运行时根本不调用它。
编辑:我让另一个人测试代码,他们也看到了同样的问题。我不认为这是系统问题。

5f0d552i

5f0d552i1#

已解决。我是在Visual Studio中的Debug配置下构建的,因此在与其他人共享时,它尝试使用VC++调试运行时库。为Release重新构建我的库和应用程序修复了该问题。

相关问题