错误:';myMD2';不命名类型 我最近对C++和OpenGL编程感兴趣,我尝试了几种代码,它们都运行得很流畅…然后我被要求测试这段代码,但由于某些原因,我总是会出错。。。现在我迷失在我该做的事情上 #define WIN32_LEAN_AND_MEAN //include only needed libraries #include <windows.h> //include necessary windows definitions #include <GL/glut.h> //include openGL functionality #include "myMD2.h" BOOL stillActive; //status checker BOOL Keys[256]; //different keys that the user can click on HDC global_Hdc; //Handle Device Context int winWidth; int winHeight; myMD2 *myMD2; LRESULT CALLBACK myWndProc(HWND hwnd, UINT uint, WPARAM wParam, LPARAM lParam); void mySetPixel (HDC pixHDC); int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hThisTust, LPSTR lpArgs,int iCmd) { HWND myHwnd; MSG myMsg; WNDCLASSEX myWndClass; static TCHAR myClass[] = TEXT("myclass"); myWndClass.cbClsExtra = 0; myWndClass.cbSize = sizeof(WNDCLASSEX); myWndClass.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); myWndClass.hCursor = LoadCursor(NULL, IDC_ARROW); myWndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); myWndClass.hIconSm = NULL; myWndClass.hInstance = hThisTust; myWndClass.lpfnWndProc = myWndProc; myWndClass.lpszClassName = myClass; myWndClass.lpszMenuName = NULL; myWndClass.style = CS_HREDRAW | CS_VREDRAW; if(!RegisterClassEx(&myWndClass)){ MessageBox(NULL, TEXT("cannot register class"), TEXT("Error"), MB_OK | MB_ICONERROR); return(0); } myHwnd = CreateWindowEx(WS_EX_APPWINDOW, myClass, NULL, WS_POPUP,0,0,1024,768,NULL, NULL, hThisTust, NULL); if(!myHwnd){ MessageBox(NULL, TEXT("cannot create window"), TEXT("Error"), MB_OK | MB_ICONERROR); return(0); } ShowWindow(myHwnd, iCmd); UpdateWindow(myHwnd); stillActive = TRUE; while(stillActive){ //Entering game loop if(PeekMessage(&myMsg, NULL, 0,0, PM_REMOVE) == WM_QUIT) stillActive = FALSE; else{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0,0,1024,768); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,1024/768,1.0f,1000.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); myMD2 -> draw(); SwapBuffers(global_Hdc); TranslateMessage(&myMsg); DispatchMessage(&myMsg); } } return myMsg.wParam; } LRESULT CALLBACK myWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ HDC myHdc; HGLRC myHglrc; //Handle Graphics Library Resource Context switch(msg){ case WM_CREATE: myHdc = GetDC(hwnd); global_Hdc = myHdc; mySetPixel(myHdc); myHglrc = wglCreateContext(myHdc); wglMakeCurrent(myHdc, myHglrc); myMD2 = new MYMD2(); myMD2->setup(); myMD2->angle += 180; myMD2->obj3D.SetAnim(1); return(0); break; case WM_KEYDOWN: Keys[wParam] = TRUE; if (Keys['Q']) //Keys[VK_ESCAPE] stillActive = FALSE; if (Keys[VK_SPACE]) //If the spacebar is pressed myMD2->obj3D.SetAnim(6); return(0); break; case WM_KEYUP: if (Keys[VK_SPACE]) myMD2->obj3D.SetAnim(1); Keys[wParam] = FALSE; return(0); break; case WM_SIZE: winWidth = LOWORD(lParam); winHeight = HIWORD(lParam); if (winHeight == 0) winHeight = 1; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0,0,1024,768); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,1024/768,1.0f,1000.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); return(0); break; case WM_CLOSE: if(myHdc){ ReleaseDC(hwnd, myHdc); } if(myHglrc){ wglMakeCurrent(NULL, NULL); wglDeleteContext(myHglrc); } PostQuitMessage(0); return(0); break; case WM_DESTROY: if(myHdc){ ReleaseDC(hwnd, myHdc); } if(myHglrc){ wglMakeCurrent(NULL, NULL); wglDeleteContext(myHglrc); } PostQuitMessage(0); return(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); break; } } void mySetPixel(HDC myPixHdc){ int mySelected; PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_TYPE_RGBA, 32, 0,0,0,0,0,0, 0, 0,0,0,0,0,0, 16, 0, 0, PFD_MAIN_PLANE, 0,0,0,0 }; mySelected = ChoosePixelFormat(myPixHdc, &pfd); SetPixelFormat(myPixHdc, mySelected, &pfd); }

错误:';myMD2';不命名类型 我最近对C++和OpenGL编程感兴趣,我尝试了几种代码,它们都运行得很流畅…然后我被要求测试这段代码,但由于某些原因,我总是会出错。。。现在我迷失在我该做的事情上 #define WIN32_LEAN_AND_MEAN //include only needed libraries #include <windows.h> //include necessary windows definitions #include <GL/glut.h> //include openGL functionality #include "myMD2.h" BOOL stillActive; //status checker BOOL Keys[256]; //different keys that the user can click on HDC global_Hdc; //Handle Device Context int winWidth; int winHeight; myMD2 *myMD2; LRESULT CALLBACK myWndProc(HWND hwnd, UINT uint, WPARAM wParam, LPARAM lParam); void mySetPixel (HDC pixHDC); int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hThisTust, LPSTR lpArgs,int iCmd) { HWND myHwnd; MSG myMsg; WNDCLASSEX myWndClass; static TCHAR myClass[] = TEXT("myclass"); myWndClass.cbClsExtra = 0; myWndClass.cbSize = sizeof(WNDCLASSEX); myWndClass.hbrBackground = (HBRUSH) GetStockObject(BLACK_BRUSH); myWndClass.hCursor = LoadCursor(NULL, IDC_ARROW); myWndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION); myWndClass.hIconSm = NULL; myWndClass.hInstance = hThisTust; myWndClass.lpfnWndProc = myWndProc; myWndClass.lpszClassName = myClass; myWndClass.lpszMenuName = NULL; myWndClass.style = CS_HREDRAW | CS_VREDRAW; if(!RegisterClassEx(&myWndClass)){ MessageBox(NULL, TEXT("cannot register class"), TEXT("Error"), MB_OK | MB_ICONERROR); return(0); } myHwnd = CreateWindowEx(WS_EX_APPWINDOW, myClass, NULL, WS_POPUP,0,0,1024,768,NULL, NULL, hThisTust, NULL); if(!myHwnd){ MessageBox(NULL, TEXT("cannot create window"), TEXT("Error"), MB_OK | MB_ICONERROR); return(0); } ShowWindow(myHwnd, iCmd); UpdateWindow(myHwnd); stillActive = TRUE; while(stillActive){ //Entering game loop if(PeekMessage(&myMsg, NULL, 0,0, PM_REMOVE) == WM_QUIT) stillActive = FALSE; else{ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0,0,1024,768); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,1024/768,1.0f,1000.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); myMD2 -> draw(); SwapBuffers(global_Hdc); TranslateMessage(&myMsg); DispatchMessage(&myMsg); } } return myMsg.wParam; } LRESULT CALLBACK myWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){ HDC myHdc; HGLRC myHglrc; //Handle Graphics Library Resource Context switch(msg){ case WM_CREATE: myHdc = GetDC(hwnd); global_Hdc = myHdc; mySetPixel(myHdc); myHglrc = wglCreateContext(myHdc); wglMakeCurrent(myHdc, myHglrc); myMD2 = new MYMD2(); myMD2->setup(); myMD2->angle += 180; myMD2->obj3D.SetAnim(1); return(0); break; case WM_KEYDOWN: Keys[wParam] = TRUE; if (Keys['Q']) //Keys[VK_ESCAPE] stillActive = FALSE; if (Keys[VK_SPACE]) //If the spacebar is pressed myMD2->obj3D.SetAnim(6); return(0); break; case WM_KEYUP: if (Keys[VK_SPACE]) myMD2->obj3D.SetAnim(1); Keys[wParam] = FALSE; return(0); break; case WM_SIZE: winWidth = LOWORD(lParam); winHeight = HIWORD(lParam); if (winHeight == 0) winHeight = 1; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glViewport(0,0,1024,768); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,1024/768,1.0f,1000.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); return(0); break; case WM_CLOSE: if(myHdc){ ReleaseDC(hwnd, myHdc); } if(myHglrc){ wglMakeCurrent(NULL, NULL); wglDeleteContext(myHglrc); } PostQuitMessage(0); return(0); break; case WM_DESTROY: if(myHdc){ ReleaseDC(hwnd, myHdc); } if(myHglrc){ wglMakeCurrent(NULL, NULL); wglDeleteContext(myHglrc); } PostQuitMessage(0); return(0); break; default: return DefWindowProc(hwnd, msg, wParam, lParam); break; } } void mySetPixel(HDC myPixHdc){ int mySelected; PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_TYPE_RGBA, 32, 0,0,0,0,0,0, 0, 0,0,0,0,0,0, 16, 0, 0, PFD_MAIN_PLANE, 0,0,0,0 }; mySelected = ChoosePixelFormat(myPixHdc, &pfd); SetPixelFormat(myPixHdc, mySelected, &pfd); },c++,opengl,C++,Opengl,headerfilemyMD2.h未定义名为myMD2的类或结构。从剩下的代码中,我猜您下载了错误的头文件。myMD2似乎同时用作类型名称和变量名称。这是太混乱了,所以考虑改变他们的名字之一。你介意显示为“MyDy.h”的内容吗?实际上它没有给我连同代码…所以我试着在互联网上查找,并在github上找到了这个#ifndef MY_MD2_H#define MY_MD2_H typedef void*MD2#t;md2_t md2_打开(常量字符*文件名);无效md2_关闭(md2_t h);无效

headerfile
myMD2.h
未定义名为
myMD2
的类或结构。从剩下的代码中,我猜您下载了错误的头文件。

myMD2
似乎同时用作类型名称和变量名称。这是太混乱了,所以考虑改变他们的名字之一。你介意显示为“MyDy.h”的内容吗?实际上它没有给我连同代码…所以我试着在互联网上查找,并在github上找到了这个#ifndef MY_MD2_H#define MY_MD2_H typedef void*MD2#t;md2_t md2_打开(常量字符*文件名);无效md2_关闭(md2_t h);无效md2描述(md2描述);无效md2_帧_样本(md2_t_h);无效md2_图纸(md2_t h)#Endifys,编译器说“myMD2”没有命名类型,因为
myMD2
未定义且没有命名类型。您在github上找到的代码看起来与您的代码所做的完全无关。我想你刚刚发现了一个名字类似的东西。请要求您测试该代码的人提供所需的代码。
#ifndef MY_MD2_H
#define MY_MD2_H

typedef void* md2_t;
md2_t md2_open(const char *filename);
void md2_close(md2_t h);
void md2_desc(md2_t h);
void md2_frame_sample(md2_t _h);
void md2_draw(md2_t h);

#endif