应用程序在glfwCreateWindow()时静默崩溃



我正在制作一个使用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的分发指南,它具有在我朋友的机器上运行所需的dll。然而,在我的初始化函数中,应用程序在没有glfw错误回调或其他任何东西的情况下被终止。

我朋友的电脑是一台windows 10笔记本电脑,配有英特尔超高清显卡620。已安装的opengl版本为4.5。

我已尝试验证已安装的opengl版本,该版本高于我的应用程序请求的版本。

我已经尝试检查是否有任何丢失的dll不存在于我的应用程序中使用依赖项和依赖项步行者,所有这些都显示没有任何问题。

如果有问题,我将GLFW错误回调设置为垃圾邮件控制台,并且在我朋友的计算机上运行时根本不调用它。

编辑:我让另一个人测试代码,他们也看到了同样的问题。我认为这不是制度问题。

解决。我在调试配置下在Visual Studio中构建这个,所以它试图在与他人共享时使用vc++调试运行时库。为发布重新构建我的库和应用程序修复了这个问题。

最新更新