glu.h 问题!

2024-01-13

好的,我在 Windows 7 上设置 Visual studios C++ 10,这样我就可以运行《OpenGL superible 第五版》这本书中的示例程序,但我在使用 GLTools 和 freeglut 时遇到了一些重大问题:
到目前为止,我是这样设置所有内容的............

拳头遵循了我上网的以下步骤:

首先你要下载 glut 或 freeglut,然后解压它。
- 我从 zip 文件中得到这个http://www.starstonesoftware.com/OpenGL/ http://www.starstonesoftware.com/OpenGL/

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

应该有一个名为 freeglut 的 VS 项目文件,运行该文件,如果出现转换窗口,请单击“完成”。然后编译,如果编译完成后提示无法启动,就可以了。

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

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

除此之外,还有一个名为 freeglut 的文件,其类型为对象文件库。这需要进入 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\

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

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

四.即使您已经复制了 GLTools.lib 进入 lib 文件夹,您可能仍然需要 告诉VS2010使用GLTools.lib文件 编译项目时。打开 物业经理(您需要一个开放的 项目来做到这一点),从菜单选项 查看 → 物业经理。左边 VS IDE 的手窗格将更改为 给物业经理看。你可以 调整其大小以使其更具可读性。 如果完整列表是,则展开项目 未显示,然后双击其中之一 Microsoft.Cpp.Win32.user 链接到 打开用户属性对话框。 在属性管理器中,选择链接器→输入,然后单击附加 依赖关系(见下文)。在弹出的对话框中添加“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 中!我真的不知道出了什么问题,我已经遇到这个问题一周了...... 请帮忙=)

谢谢,如有任何问题,请随时提出!


不幸的是,您遵循的所有说明都是坏主意。将调试 DLL 复制到系统目录中——不好。将文件复制到 Visual Studio 的包含目录中——不好。

我不使用 GLUT,所以我没有一系列的工作步骤,但实际上您应该在项目中创建一个包含 include、lib 和 bin 子目录的子目录,并在其中安排所有内容。 Visual C++ 2008 具有计算机范围的目录设置,而 Visual C++ 2010 具有每个项目的目录配置。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

glu.h 问题! 的相关文章

  • C++ Singleton 类 getInstance (作为 java)[重复]

    这个问题在这里已经有答案了 可能的重复 谁能给我提供一份 C 中的 Singleton 示例吗 https stackoverflow com questions 270947 can any one provide me a sample
  • ZedGraph 缩放和调整大小

    当我绘制图形 放大和缩小并重新绘制图形时 图形的位置不会改变 我想要做的是 每当重新绘制数据时 视图都会更改以查看所有图形数据 如果您在重绘之前放大或缩小 这似乎会被禁用 Thanks 设置属性 IsZoomOnMouseCenter对于控
  • 当“”可以分配给std::string时,为什么有“clear”方法?

    一个可以用string clear函数清空字符串 也可以使用空双引号 来执行此操作 有什么不同 当您分配一个空字符串时 编译器必须在数据部分存储一个空的 C 字符串 并创建代码以将指向它的指针传递给赋值运算符 然后 赋值运算符必须从数据部分
  • C++17 中带有 noexcept 的 std::function

    在 C 17 中noexcept 已添加到类型系统中 http www open std org jtc1 sc22 wg21 docs papers 2015 p0012r1 html void r1 void f noexcept f
  • 为什么测试在 TeamCity 中运行比直接在 NUnit 中运行需要更长的时间?

    我进行了一些 C 性能测试 基本上运行两种不同的方法 并检查一种方法的运行速度是否比另一种方法快得多 当我在 NUnit 本地运行它们时 其中一个测试的运行速度是另一个测试的十倍 因此我有一个 NUnit 测试 它使用Stopwatch检查
  • 使用 MapViewOfFile 有什么限制吗?

    我正在尝试将内存映射文件用作 hFile CreateFile State Path GENERIC READ FILE SHARE READ FILE SHARE WRITE 0 OPEN EXISTING FILE FLAG SEQUE
  • 编译器在函数名称前添加下划线前缀的原因是什么?

    当我看到 C 应用程序的汇编代码时 如下所示 emacs hello c clang S O hello c o hello s cat hello s 函数名称以下划线作为前缀 例如callq printf 为什么这样做以及它有什么优点
  • 适用于 Windows 的键值数据库?

    除了 MongoDB 和 Memcached 之外 Windows 上还运行哪些键值存储 我见过的大多数似乎只能在 Linux 上运行 Hypertable Redis Lightcloud 相关链接 是否有经过商业验证的云存储 Key g
  • 在标准库中静态链接时如何支持动态插件?

    假设一个应用程序myapp exe是使用构建的g 它使用标志 static libstdc 这样就可以安装在没有环境的情况下libstdc so myapp exe还添加了对某些功能的插件支持plugf可以通过动态加载dlopen来自共享库
  • 锁定文件的一个块

    我有一个大小为 192k 的文件 我想锁定文件的中间部分 例如 我想用 c 锁定文件的 64k 128k 知道如何锁定文件的那部分吗 你需要使用锁定文件Ex http msdn microsoft com en us library win
  • 如何忽略搜索条件中的空属性

    我有一个不好的要求要做 无论如何 我必须在我的应用程序中实现它 我有一个Track class public class Track public string Name get set public string City get set
  • 复杂的 C 声明

    我刚刚在互联网上浏览了一些代码 发现了这个 float foo SIZE SIZE 我如何阅读这份声明 是否有一套特定的规则来阅读如此复杂的声明 我有一段时间没做这个了 从 开始foo然后向右走 float foo SIZE SIZE fo
  • 带有 Unicode 字符的主机名在 Windows 8 中有效

    Uri CheckHostName 回报UriHostNameType Unknown到处都是 但在 Windows 8 上 它又回来了UriHostNameType Dns 为什么突然间带有 Unicode 西里尔字符的主机名在 Wind
  • DLL 中的 XP 风格组合框

    我需要使用 C 和 WIN32 API 无 MFC 在 DLL 中创建 XP 风格的组合框 我设法在 DLL 中创建控件 不是以 XP 风格 我设法在带有清单的 exe 中创建 XP 样式组合框 但它在 DLL 中不起作用 为了让您的 DL
  • C语言中如何将整数转换为字符? [复制]

    这个问题在这里已经有答案了 C语言中如何将整数转换为字符 C 中的字符已经是数字 字符的 ASCII 代码 无需转换 如果要将数字转换为相应的字符 只需添加 0 即可 c i 0 0 是 ASCii 表中的一个字符
  • C++ std:.auto_ptr 或 std::unique_ptr (支持多个编译器,甚至是旧的 C++03 编译器)?

    我正在尝试更新一些 C 代码 我想转向更现代的代码 c 11 但我仍然需要使用一些较旧的编译器 兼容 c 03 来编译代码 因为支持的平台限制 我知道在 C 11 编译器中 std auto ptr 已被弃用 但由于较旧的编译器支持 我不能
  • 检测用户是否正在滚动 dataGridView 滚动条

    我正在更新一个dataGridView与一个新的数据表使用 dataGridView1 DataSource table 但是 我不想在用户滚动 dataGridView 时执行此操作 如何检查滚动条是否正在滚动或已完成滚动 即拖动而不是单
  • C# 记录类型:记录子类之间的相等比较

    给定父记录类型 public record Foo string Value 和两个记录子类Bar and Bee我想知道是否可以实施Equals在基类中 因此 Foo Bar 或 Bee 的实例都被考虑equal基于Value 两者都与E
  • 没有运算符“<<”与这些操作数匹配[重复]

    这个问题在这里已经有答案了 不知道发生了什么事 我查看了与此问题类似的其他帖子 但到目前为止没有解决方案有帮助 这是带有错误部分注释的代码 在某一时刻 它说 不起作用 而在代码的其余部分中 它说 include
  • Selenium WebDriver 在按钮单击事件上无法正常工作。这里有什么问题呢?

    I am using following code to scrape data from a website I have following interface 这是 HTML div class es content div

随机推荐