Eclipse IDE: linking OpenGL Libraries (C++)

Eclipse IDE: linking OpenGL Libraries (C++)

本文关键字:C++ Libraries OpenGL IDE linking Eclipse      更新时间:2023-10-16

经过数周无休止地尝试将一些库链接到Eclipse,我没有找到任何解决方案。虽然我没有收到错误,但当我按下run时,会弹出一个对话框,显示"OpenGL32Test.exe已停止工作"(顺便说一句,OpenGL32Test是我的Eclipse项目的名称)。下面的代码是我试图编译的,但它根本不会创建它应该创建的黑色窗口和红色方块(代码取自https://www3.ntu.edu.sg/home/ehchua/programming/opengl/HowTo_OpenGL_C.html#mingw_glut一个我试图关注的网站):

#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;
}

我用链接库编译程序,我去了:

项目属性=>C/C++构建=>设置=>工具设置=>MinGW C++Linker

我添加了库文件freeglut、glu32和opengl32。程序根本无法运行。此外,在:中

C/C++常规=>路径和符号=>库选项卡

我把这三个图书馆联系起来了。请帮我弄清楚为什么我的程序根本无法运行!是因为我把文件链接搞砸了吗?我在Windows上运行,使用MinGW,但我知道我正在链接库,因为程序成功构建,控制台行似乎是正确的:

g++-o OpenGLtest.exe main.o-lfreeglut-lglu32-lopeng32

我把这个程序运行所需的所有必要的lib文件和头文件都放在它们所属的MinGW根目录(include/GL文件夹和lib文件夹)中。问题出在哪里?

  1. 所以我曾经做过同样的教程,并使它发挥作用,我认为不必复制dll

添加"-static-libgcc-static-libstdc++"作为新项目的链接器标志。此文本应添加到链接器标志字段中,该字段可通过在项目资源管理器中右键单击新项目并单击"属性"找到。在"项目属性"下,展开"C/C++生成"菜单,然后单击"设置"。在"工具设置"选项卡下,展开"MinGW C++链接器"菜单,然后单击"杂项"。将文本添加到链接器标志字段,然后单击"应用"按钮。

这在当时很有效,但当我今晚尝试时,效果并不好:-\

  1. 但在实验室的说明中,它确实说要将dll复制到MinGW bin目录中。。.dll的另一个名称是共享库

"从"include\GL"下载、解压缩并复制头文件到"MINGW_HOME\include\GL";从"lib"到"MINGW_HOME\lib"的库,以及从"bin"到"MINGW_HOME\bin"的共享库(应包含在PATH环境变量中),其中MINGW_HOME是MINGW安装的目录。"

我找到了答案。基本上,我没有正确使用.dll。在windows中,动态库是扩展名为.dll的库。通过将.dll与.exe可执行文件放在同一目录中,程序就可以运行。