-1

さて、Windows7でVisualStudios C ++ 10をセットアップして、この本「OpenGL superbible 5th edition」のサンプルプログラムを実行できるようにしますが、GLToolsとfreeglutを中華なべにする際にいくつか
の大きな問題があります。これがすべてを設定する方法です。これまでのところ........................。

拳は私がオンラインになったこれらのステップに従いました:

最初にglutまたはfreeglutをダウンロードし、次にそれを解凍します。-これはhttp://www.starstonesoftware.com/OpenGL/
のzipファイルから入手しました。

freeglutフォルダーには、VisualStudio2008というフォルダーがあります。これに移動します。

freeglutというVSプロジェクトファイルがあるはずです。これを実行し、変換ウィンドウが表示されたら[完了]をクリックします。それからそれをコンパイルします、それが終わったときにそれが開始できないと言うなら、これは大丈夫です。

これで、同じフォルダーにDebugという新しいフォルダーが作成されます。これは、freeglutをコンパイルしたばかりです:)。

中にはfreeglut.dllがあります。これは、system32フォルダーまたはSysWOW64にそれぞれ入れる必要があります。

これに加えて、freeglutと呼ばれるファイルがあり、そのタイプはオブジェクトファイルライブラリになります。これは、VisualStudioのlibフォルダーに移動する必要があります。

次に、メインのfreeglutフォルダーに戻ります。Includeというフォルダがあるはずです。この中にGLと呼ばれるフォルダと2つのファイルがあります。これらは、VisualStudioのインクルードフォルダーにコピーする必要があります。

libフォルダーとIncludeフォルダーは、メインのVisual Studioフォルダー(私にとってはMicrosoft Visual Studio 10.0)にあるVCフォルダー内にあります。

そこに:)`

次に、次の手順に従って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フォルダーにコピーした場合でも、プロジェクトをコンパイルするときにGLTools.libファイルを使用するようにVS2010に指示する必要がある場合があります。メニューオプションの[表示]→[プロパティマネージャー]から、プロパティマネージャーを開きます(これを行うには、開いているプロジェクトが必要です)。VS IDEの左側のペインが変更され、プロパティマネージャーが表示されます。これをサイズ変更して読みやすくすることができます。完全なリストが表示されていない場合はプロジェクトを展開し、Microsoft.Cpp.Win32.userリンクの1つをダブルクリックして、ユーザープロパティダイアログを開きます。プロパティマネージャーで、[リンカー]→[入力]を選択し、[追加の依存関係]をクリックします(以下を参照)。ポップアップ表示されるダイアログで「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週間抱えていました...助けてください=)

ありがとう、そしてどんな質問でも気軽に!

4

1 に答える 1

6

残念ながら、あなたが従った指示はすべて悪い考えでした。デバッグDLLをシステムディレクトリにコピーしています-悪いです。VisualStudioのインクルードディレクトリにファイルをコピーします-悪いです。

私はGLUTを使用していないので、一連の作業手順はありませんが、実際には、プロジェクトにinclude、lib、binサブディレクトリを含むサブディレクトリを作成し、その中にすべてを配置する必要があります。Visual C ++ 2008にはマシン全体のディレクトリ設定がありましたが、Visual C++2010にはプロジェクトごとのディレクトリ構成があります。

現在発生しているエラーを修正する限り、225行目から始まるGL/glu.hのブロックを表示する必要があります。

于 2011-04-12T02:25:15.053 に答える