我正在使用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版本,它比我的应用程序要求的要高。
我已经尝试使用Dependencies和Dependency Walker检查我的应用程序中是否存在任何丢失的dll,所有这些都显示没有任何问题。
我将GLFW错误回调设置为垃圾邮件控制台(如果有问题),并且在我朋友的计算机上运行时根本不调用它。
编辑:我让另一个人测试代码,他们也看到了同样的问题。我不认为这是系统问题。
1条答案
按热度按时间5f0d552i1#
已解决。我是在Visual Studio中的Debug配置下构建的,因此在与其他人共享时,它尝试使用VC++调试运行时库。为Release重新构建我的库和应用程序修复了该问题。