C++ eclipseide:链接OpenGL库(C+;+;)
经过数周无休止地尝试将一些库链接到Eclipse之后,我没有找到解决方案。虽然我没有收到错误,但当我按run时,会弹出一个对话框说“OpenGL32Test.exe已停止工作”(顺便说一下,OpenGL32Test是我的Eclipse项目的名称)。下面的代码是我试图编译的,但它不会创建它应该创建的黑色窗口和红色方块(代码取自我试图遵循的网站):C++ eclipseide:链接OpenGL库(C+;+;),c++,eclipse,windows,opengl,libraries,C++,Eclipse,Windows,Opengl,Libraries,经过数周无休止地尝试将一些库链接到Eclipse之后,我没有找到解决方案。虽然我没有收到错误,但当我按run时,会弹出一个对话框说“OpenGL32Test.exe已停止工作”(顺便说一下,OpenGL32Test是我的Eclipse项目的名称)。下面的代码是我试图编译的,但它不会创建它应该创建的黑色窗口和红色方块(代码取自我试图遵循的网站): #包含//用于MS Windows #包括//GLUT,包括glu.h和gl.h /*窗口重绘事件的处理程序。第一次出现窗口时回拨,然后重试 每当窗户需
#包含//用于MS Windows
#包括//GLUT,包括glu.h和gl.h
/*窗口重绘事件的处理程序。第一次出现窗口时回拨,然后重试
每当窗户需要重新油漆时*/
无效显示(){
glClearColor(0.0f,0.0f,0.0f,1.0f);//将背景色设置为黑色和不透明
glClear(GL_COLOR_BUFFER_BIT);//清除颜色缓冲区
//以原点为中心绘制一个红色1x1正方形
glBegin(GL_四边形);//每组4个顶点构成一个四边形
glColor3f(1.0f,0.0f,0.0f);//红色
glVertex2f(-0.5f,-0.5f);//x,y
glVertex2f(0.5f,-0.5f);
glVertex2f(0.5f,0.5f);
glVertex2f(-0.5f,0.5f);
格伦德();
glFlush();//立即渲染
}
/*主要功能:GLUT作为控制台应用程序从Main()开始运行*/
int main(int argc,字符**argv){
glutInit(&argc,argv);//初始化GLUT
glutCreateWindow(“OpenGL设置测试”);//创建具有给定标题的窗口
GLUTINITWindowsSize(320320);//设置窗口的初始宽度和高度
glutInitWindowPosition(50,50);//定位窗口的初始左上角
glutDisplayFunc(display);//注册窗口重新绘制的显示回调处理程序
glutMainLoop();//进入无限事件处理循环
返回0;
}
我用链接库完成了该计划,我去了:
项目属性=>C/C++构建=>设置=>工具设置=>
MIWW C++链接器< /P>
我添加了库文件freeglut、glu32和opengl32。程序根本不会运行。此外,在:
C/C++常规=>路径和符号=>库选项卡
我有3个图书馆链接。请帮我弄清楚为什么我的程序根本无法运行!是因为我把文件链接搞砸了吗?我在Windows上运行并使用MinGW,但我知道我正在链接库,因为程序成功构建,控制台行似乎正确:
g++-o OpenGLtest.exe main.o-lfreeglut-lglu32-lopengl32
我将该程序运行所需的所有必需的lib文件和头文件放在它们所属的MinGW根目录(include/GL文件夹和lib文件夹)中。有什么问题吗?我找到了答案。基本上,我没有正确使用.dll。在windows中,动态库是扩展名为.dll的库。通过将.dll与.exe可执行文件放在同一目录中,程序可以运行
#include <windows.h> // For MS Windows
#include <GL/glut.h> // GLUT, includes glu.h and gl.h
/* Handler for window-repaint event. Call back when the window first appears and
whenever the window needs to be re-painted. */
void display() {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // Set background color to black and opaque
glClear(GL_COLOR_BUFFER_BIT); // Clear the color buffer
// Draw a Red 1x1 Square centered at origin
glBegin(GL_QUADS); // Each set of 4 vertices form a quad
glColor3f(1.0f, 0.0f, 0.0f); // Red
glVertex2f(-0.5f, -0.5f); // x, y
glVertex2f( 0.5f, -0.5f);
glVertex2f( 0.5f, 0.5f);
glVertex2f(-0.5f, 0.5f);
glEnd();
glFlush(); // Render now
}
/* Main function: GLUT runs as a console application starting at main() */
int main(int argc, char** argv) {
glutInit(&argc, argv); // Initialize GLUT
glutCreateWindow("OpenGL Setup Test"); // Create a window with the given title
glutInitWindowSize(320, 320); // Set the window's initial width & height
glutInitWindowPosition(50, 50); // Position the window's initial top-left corner
glutDisplayFunc(display); // Register display callback handler for window re-paint
glutMainLoop(); // Enter the infinitely event-processing loop
return 0;
}