glu.h问题!

时间:2011-04-12 01:16:59

标签: c++ visual-studio-2010 opengl static-libraries freeglut

好的,所以即时通讯在Windows 7上设置Visual Studio C ++ 10,这样我就可以从本书“OpenGL superbible 5th edition”中运行示例程序,但是我有一些主要的问题,在获取GLTools和freeglut的时候:
以下是我到目前为止设置的所有内容.........................

拳头按照这些步骤上网:

首先你要下载过剩或freeglut,然后解压缩它 - 我从http://www.starstonesoftware.com/OpenGL/

的zip文件中得到了这个

在freeglut文件夹中应该有一个名为VisualStudio2008的文件夹,请进入此目的。

应该有一个名为freeglut的VS项目文件,运行它并在转换窗口出现时单击“完成”。然后编译它,如果它完成它说无法启动,这没关系。

现在在同一个文件夹中应该有一个名为Debug的新文件夹,因为你刚刚编译了freeglut:)。

在里面你会发现freeglut.dll。这需要分别进入你的system32文件夹或SysWOW64。

此外还有一个名为freeglut的文件,其类型为Object File Library。这需要进入Visual Studio中的lib文件夹。

现在回到主要的freeglut文件夹。应该有一个名为Include的文件夹。在这个名为GL的文件夹和两个文件中。这些需要复制到Visual Studio中的Include文件夹中。

lib和Include文件夹位于VC文件夹中,该文件夹位于Visual Studio文件夹中,对我来说是Microsoft Visual Studio 10.0。

有:)。“

然后我按照以下步骤设置了GLTools和freeglut:

这需要计算机上的管理员权限。

我。将所有freeglut头文件(以.h结尾)复制到该文件夹​​: C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ include \ GL \

II。将所有GLTools头文件(以.h结尾)复制到 C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ include \

III。将所有freeglut和GLTools库文件(以.lib结尾)文件复制到 C:\ Program Files \ Microsoft Visual Studio 10.0 \ VC \ lib \

IV。即使您复制了GLTools.lib 进入lib文件夹,您可能仍需要 告诉VS2010使用GLTools.lib文件 在编译项目时。打开 物业经理(你需要一个开放的 项目来执行此操作),从菜单选项 查看→物业经理。左边 VS IDE的手窗格将更改为 显示物业经理。您可以 调整大小以使其更具可读性。 如果完整列表是,则展开项目 没有显示,然后双击其中一个 Microsoft.Cpp.Win32.user链接到 打开用户属性对话框。 在Property Manager中,选择Linker→Input,然后单击Additional 依赖关系(见下文)。在弹出的对话框中添加“GLTools.lib”, 我还在此添加了feeglut_static.lib!

好吧,所以最后这里是我想要运行的代码:

#include <GLTools.h>            // OpenGL toolkit 
#include <GLShaderManager.h>    // Shader Manager Class 

#ifdef __APPLE__ 
#include <glut/glut.h>          // OS X version of GLUT 
#else 
#define FREEGLUT_STATIC 
#include <GL/glut.h>            // Windows FreeGlut equivalent 
#endif 


GLBatch triangleBatch;
GLShaderManager shaderManager;

///////////////////////////////////////////////////////////////////////////////
// Window has changed size, or has just been created. In either case, we need
// to use the window dimensions to set the viewport and the projection matrix.
void ChangeSize(int w, int h)
    {
    glViewport(0, 0, w, h);
    }


///////////////////////////////////////////////////////////////////////////////
// This function does any needed initialization on the rendering context.
// This is the first opportunity to do any OpenGL related tasks.
void SetupRC()
    {
    // Blue background
    glClearColor(0.0f, 0.0f, 1.0f, 1.0f );

    shaderManager.InitializeStockShaders();

    // Load up a triangle
    GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f,
                          0.5f, 0.0f, 0.0f,
                          0.0f, 0.5f, 0.0f };

    triangleBatch.Begin(GL_TRIANGLES, 3);
    triangleBatch.CopyVertexData3f(vVerts);
    triangleBatch.End();
    }



///////////////////////////////////////////////////////////////////////////////
// Called to draw scene
void RenderScene(void)
    {
    // Clear the window with current clearing color
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);

    GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f };
    shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed);
    triangleBatch.Draw();

    // Perform the buffer swap to display back buffer
    glutSwapBuffers();
    }


///////////////////////////////////////////////////////////////////////////////
// Main entry point for GLUT based programs
int main(int argc, char* argv[])
    {
    gltSetWorkingDirectory(argv[0]);

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL);
    glutInitWindowSize(800, 600);
    glutCreateWindow("Triangle");
    glutReshapeFunc(ChangeSize);
    glutDisplayFunc(RenderScene);

    GLenum err = glewInit();
    if (GLEW_OK != err) {
        fprintf(stderr, "GLEW Error: %s\n", glewGetErrorString(err));
        return 1;
        }

    SetupRC();

    glutMainLoop();
    return 0;
    }

最后,最后,这是我接受的错误:

1>------ Build started: Project: Triangle, Configuration: Debug Win32 ------
1>  Triangle.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(225): error C2144: syntax error : 'void' should be preceded by ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(225): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(226): error C2144: syntax error : 'void' should be preceded by ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(226): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(226): error C2086: 'int GLAPI' : redefinition
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(225) : see declaration of 'GLAPI'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(227): error C2144: syntax error : 'void' should be preceded by ';'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(227): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(227): error C2086: 'int GLAPI' : redefinition
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\gl\glu.h(225) : see declaration of 'GLAPI'

错误C1003:错误计数超过100;停止编译

这是永远的,我不知道怎么会出现这样的问题,为什么会发生在GLU.h中呢!我真的不确定这是错误的,我有一个星期的问题... 请帮助=)

谢谢你,随时提出任何问题!

1 个答案:

答案 0 :(得分:6)

不幸的是,你所遵循的所有指示都是糟糕的想法。将调试DLL复制到系统目录中 - 不好。将文件复制到Visual Studio包含目录 - bad。

我不使用GLUT,因此我没有一系列工作步骤,但实际上你应该在项目中使用include,lib和bin子目录创建一个子目录,并将所有内容安排在那里。虽然Visual C ++ 2008具有计算机范围的目录设置,但Visual C ++ 2010具有每项目目录配置。

至于修复你现在的错误,你需要从225行开始向我们展示一块GL / glu.h。