我最近一直在学习用c ++编程,但在使用GLEW和GLFW时我遇到了问题。
来源(.cpp):
#include<iostream>
#define GLEW_STATIC
#include "GLEW/glew.h"
#include <GLFW/glfw3.h>
int main(){
std::cout<<"test";
GLFWWindow* window;
window = glfwCreateWindow(800,600,"Test", glfwGetPrimaryMonitor(),NULL);
return 0;
}
这个程序编译没有错误,但是当它运行时,尽管std :: cout没有生成输出。但是,只要glfwCreateWindow调用被注释掉,程序就会显示它应该的输出。
我对此非常困惑,想知道我能做些什么来修复它。
编辑:我怀疑它是std :: cout的问题,因为当我尝试显示这样的窗口时,我仍然没有收到该程序的响应。glfwShowWindow(window);
while(!glfwWindowShouldClose(window))glfwPollEvents();
glfwDestroyWindow(window);
编辑2: 这是我现在的代码:
#define GLEW_STATIC
#include "GLEW/glew.h"
#include <GLFW/glfw3.h>
#include <iostream>
int main(){
std::cout<<"test" << std::endl;
glfwInit();
GLFWwindow* window;
window = glfwCreateWindow(800,600,"TEST", NULL, NULL);
glfwShowWindow(window);
while(!glfwWindowShouldClose(window))glfwPollEvents();
glfwDestroyWindow(window);
glfwTerminate();
std::cin.get();
}
编辑3:标题
编辑4:经过一些实验,我发现在源文件中提及glfw调用似乎阻止了程序的运行。以下内容不会生成输出:
int main(){
std::cout<<"test" << std::endl;
std::cout.flush();
std::cin.get();
}
void test(){
glfwInit();
GLFWwindow* window;
window = glfwCreateWindow(800,600,"TEST", NULL, NULL);
glfwShowWindow(window);
while(!glfwWindowShouldClose(window))glfwPollEvents();
glfwDestroyWindow(window);
glfwTerminate();
}
答案 0 :(得分:1)
stdout
上没有输出的一些原因:
stdout
的打印都将转到bitbucket。如果您使用MinGW工具链,则由-mwindows
链接器标志您可以要求了解更多信息:
glfwCreateWindow
隐藏了输出,因此它可能会在该函数内崩溃。你传递了正确的论点吗?glfwCreateWindow
会返回有效指针吗?