簡體   English   中英

Eclipse IDE:鏈接OpenGL庫(C ++)

[英]Eclipse IDE: linking OpenGL Libraries (C++)

經過數周無休止的嘗試以將某些庫鏈接到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 ++鏈接器

我添加了庫文件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可執行文件放在同一目錄中,該程序可以運行。

  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的安裝目錄。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM