错误:'myMD2'未命名类型
error: 'myMD2' does not name a type
我最近对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.h
#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
头文件myMD2.h
未定义名为myMD2
的类或结构。根据您代码的其余部分,我猜您下载了错误的头文件。
相关文章:
- 未命名的非类型模板参数有什么意义?
- C++包含函数标头会给出错误'__dest'未命名类型
- 错误:"cast"未命名类型void setCastDescription(std::string
- C++ 错误:(类名)未命名类型
- C++ ,错误:命名空间'std'中的'shared_ptr'未命名模板类型
- src/caffe/parallel.cpp:70:1:错误:“参数”未命名类型
- 错误:'int_type'未命名类型 - 如何继承 typedefs 和用法
- 如何修复错误,迭代器未在此范围内声明,并且迭代器未命名类型'
- 使用 mex 编译库时出错 - __int 64 未命名类型
- 错误:"某个类"未命名类型。如何解决这个问题?
- 命名空间中的'bad_cast' 'std' 未命名类型错误
- QT:错误 ["*"令牌之前的预期")",并且主窗口未命名类型]
- 命名结构与未命名结构的类型别名
- "root"未命名类型错误
- Stack.h:13:3:错误:“单元格”未命名类型
- 错误:命名空间“PQXX”中的“行”未命名类型
- YYY 中的错误 XXX 未命名类型
- C 构建错误:类未命名类型
- 错误:"QGeo坐标"未命名类型
- 错误:"__NDK_FPABI__"未命名类型