MinGW找不到OpenGL命令 我试图编译我的C++应用程序,使用OpenGL。所有的include都在那里,libopengl32.a和libglu.a都在我的MinGW lib文件夹中。我的OpenGL C++文件看起来像这样: #include <GL/gl.h> #include <GL/glu.h> #include <pthread.h> #include <windows.h> #include "GL.h" //using namespace std; HDC hDC; PIXELFORMATDESCRIPTOR pfd; HGLRC hRC; BOOL ren = false; pthread_t t; void initGL(HWND hWnd) { hDC = GetDC(hWnd); ReleaseDC(hWnd, hDC); pfd.nSize = sizeof(pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; int iFormat = ChoosePixelFormat(hDC, &pfd); SetPixelFormat(hDC, iFormat, &pfd); hRC = wglCreateContext(hDC); } void destroyGL() { wglDeleteContext(hRC); } void renderGL() { wglMakeCurrent(hDC, hRC); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glBegin( GL_TRIANGLES ); glColor3f( 1.0f, 0.0f, 0.0f ); glVertex2f( 0.0f, 1.0f ); glColor3f( 0.0f, 1.0f, 0.0f ); glVertex2f( 0.87f, -0.5f ); glColor3f( 0.0f, 0.0f, 1.0f ); glVertex2f( -0.87f, -0.5f ); glEnd(); glPopMatrix(); SwapBuffers(hDC); wglMakeCurrent(NULL, NULL); } void *RenderLoop(void *args) { while(ren) { renderGL(); } return 0; } void StartRender() { ren = true; pthread_create(&t, NULL, RenderLoop, NULL); } void StopRender() { ren = false; }

MinGW找不到OpenGL命令 我试图编译我的C++应用程序,使用OpenGL。所有的include都在那里,libopengl32.a和libglu.a都在我的MinGW lib文件夹中。我的OpenGL C++文件看起来像这样: #include <GL/gl.h> #include <GL/glu.h> #include <pthread.h> #include <windows.h> #include "GL.h" //using namespace std; HDC hDC; PIXELFORMATDESCRIPTOR pfd; HGLRC hRC; BOOL ren = false; pthread_t t; void initGL(HWND hWnd) { hDC = GetDC(hWnd); ReleaseDC(hWnd, hDC); pfd.nSize = sizeof(pfd); pfd.nVersion = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cColorBits = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; int iFormat = ChoosePixelFormat(hDC, &pfd); SetPixelFormat(hDC, iFormat, &pfd); hRC = wglCreateContext(hDC); } void destroyGL() { wglDeleteContext(hRC); } void renderGL() { wglMakeCurrent(hDC, hRC); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glBegin( GL_TRIANGLES ); glColor3f( 1.0f, 0.0f, 0.0f ); glVertex2f( 0.0f, 1.0f ); glColor3f( 0.0f, 1.0f, 0.0f ); glVertex2f( 0.87f, -0.5f ); glColor3f( 0.0f, 0.0f, 1.0f ); glVertex2f( -0.87f, -0.5f ); glEnd(); glPopMatrix(); SwapBuffers(hDC); wglMakeCurrent(NULL, NULL); } void *RenderLoop(void *args) { while(ren) { renderGL(); } return 0; } void StartRender() { ren = true; pthread_create(&t, NULL, RenderLoop, NULL); } void StopRender() { ren = false; },c++,opengl,mingw,C++,Opengl,Mingw,我像这样编译代码: windres res.rc -o res.o g++ -static -static-libgcc -static-libstdc++ -s -mwindows -c win.cpp GL.cpp g++ -static -static-libgcc -static-libstdc++ -s -mwindows -lopengl32 -lglu32 win.o GL.o res.o -o bin/win.exe 似乎g++没有找到这两个lib中的任何一个。尝试使用-L选项

我像这样编译代码:

windres res.rc -o res.o
g++ -static -static-libgcc -static-libstdc++ -s -mwindows -c win.cpp GL.cpp
g++ -static -static-libgcc -static-libstdc++ -s -mwindows -lopengl32 -lglu32 win.o GL.o res.o -o bin/win.exe

似乎g++没有找到这两个lib中的任何一个。尝试使用-L选项在g++命令中显式提供所需的.a文件目录。

您记得链接opengl32.lib吗?我的计算机上不存在它。那么,这肯定是主要问题@Vallentin,@Hullu2000-或者至少如果使用的编译器正在寻找一个.lib文件。GCC没有,它查找.a文件。要检查的文件的全名是libopengl32.a。顺便说一句,我有所需的文件,但是从cmd行链接也失败了。代码::Blocks的“full”cmd行输出对我也没有帮助,我尝试使用-L选项也没有帮助。Blocks是一个轻量级的IDE,它使构建一个短的“F9”键成为可能。它修复了大部分错误,但我仍然在顶部看到了三个错误。
windres res.rc -o res.o
g++ -static -static-libgcc -static-libstdc++ -s -mwindows -c win.cpp GL.cpp
g++ -static -static-libgcc -static-libstdc++ -s -mwindows -lopengl32 -lglu32 win.o GL.o res.o -o bin/win.exe