Opengl Superbible第6版未定义平台错误

Opengl Superbible第6版未定义平台错误,opengl,codeblocks,sample,Opengl,Codeblocks,Sample,我刚开始学习superbible(第6版)中的openGL代码::blocks。 但是当我尝试运行第一个示例代码时,我从sb6.h文件中得到一个未定义的平台错误 示例代码: #include "sb6.h" // Derive my_application from sb6::application class my_application : public sb6::application { public: // Our rendering function void re

我刚开始学习superbible(第6版)中的openGL代码::blocks。 但是当我尝试运行第一个示例代码时,我从sb6.h文件中得到一个未定义的平台错误

示例代码:

#include "sb6.h"

// Derive my_application from sb6::application
class my_application : public sb6::application
{
public:
    // Our rendering function
    void render(double currentTime)
    {
        // Simply clear the window with red
        static const GLfloat red[] = { 1.0f, 0.0f, 0.0f, 1.0f };
        glClearBufferfv(GL_COLOR, 0, red);
    }
};

// Our one and only instance of DECLARE_MAIN
DECLARE_MAIN(my_application);
有人知道如何解决这个问题吗?

这是因为需要定义
\u WIN32
\u LINUX
\u APPLE
中的一个。通常,这些由编译器或平台的一个标头定义。您还可以将它们传递给编译器,例如
-D_LINUX
,或者在包含它们的头文件之前在源文件中定义它们,例如:

#ifndef _LINUX
#define _LINUX
#endif

gcc
实际上定义了
uu linux
,但这不是头文件要检查的内容。

sb6.h的末尾有一组针对各种操作系统的预处理器定义,并且由于某种原因,无法访问“#elif defined | linux | definedAPPLE”。我从“#if defined _WIN32”到“APPLE”,从“#else”到倒数第二个“#endif”进行了注释。在这些注释掉的部分之间是所需的“define DECLARE_MAIN(a)”


祝您好运,可以编译其余的程序。

看来您没有使用项目附带的CMake。当检测到时,CMake构建过程会在LINUX系统上自动添加-D_LINUX。请参阅第135行附近的文件CMakeLists.txt()。如果你没有使用CMake,你需要对构建标志做一个类似的添加。

你能发布你得到的实际错误吗?你在什么平台上,使用什么编译器?哦,是的,我的电脑在ubuntu 12.04上运行,我在使用GNU GCC编译器,这就是错误(错误:#错误未定义patform!)