glu.h ПРОБЛЕМЫ! - PullRequest
       27

glu.h ПРОБЛЕМЫ!

0 голосов
/ 12 апреля 2011

Хорошо, так что я настраиваю Visual studio C ++ 10 на Windows 7, чтобы я мог запустить примеры программ из этой книги "OpenGL superbible 5th edition", но у меня есть некоторые ОСНОВНЫЕ ПРОБЛЕМЫ, в получении GLTools и freeglut для работы:
Вот как я все настроил до сих пор .........................

кулак выполнил следующие шаги, которые я получил онлайн:

сначала вы хотите скачать glut или freeglut, а затем разархивировать их.
- Я получил это из zip-файла на http://www.starstonesoftware.com/OpenGL/

В папке freeglutдолжна быть папка с именем VisualStudio2008, зайдите в это.

Должен быть файл проекта VS с именем freeglut, запустите его и нажмите Готово, если откроется окно преобразования.Затем скомпилируйте его, если по окончании написано, что невозможно запустить, это нормально.

Теперь в той же папке должна быть новая папка с именем Debug, поскольку вы только что скомпилировали в нее freeglut:).

Внутри вы найдете freeglut.dll.Это должно быть в вашей папке system32 или SysWOW64 соответственно.

Кроме того, существует файл freeglut, его типом будет Object File Library.Это нужно перейти в вашу папку lib в Visual studio.

Теперь вернитесь в основную папку freeglut.Там должна быть папка с названием «Включить».и внутри этого папка под названием GL и два файла.Их необходимо скопировать в папку «Включить» в Visual Studio.

Папки «lib» и «Включить» находятся в папке 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, чтобы открыть диалоговое окно свойств пользователя.В Диспетчере свойств выберите «Компоновщик» → «Ввод», затем нажмите «Дополнительные зависимости» (см. Ниже).В появившемся диалоговом окне добавьте «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 Ответ

6 голосов
/ 12 апреля 2011

К сожалению, все инструкции, которым вы следовали, были плохими идеями.Копирование отладочных DLL в системный каталог - плохо.Копирование файлов в каталог включения Visual Studio - плохо.

Я не использую GLUT, поэтому у меня нет последовательности рабочих шагов, но на самом деле вы должны были создать подкаталог в вашем проекте с помощью include,подкаталоги lib и bin, и все там расположено.В то время как Visual C ++ 2008 имел настройки каталогов для всей машины, Visual C ++ 2010 имел конфигурацию каталогов для каждого проекта.

Что касается исправления имеющейся у вас ошибки, вам нужно показать нам блок GL / glu.hначиная со строки 225.

...