2012-04-03 15 views
1

まあ、私はこのopengl superbible book(第5版)を買ったばかりです。残念ながら、私は最初の章でOpenGL自体を設定する方法を見つけました。ここに私がしたステップがあります。別のOpenGL SuperBible第5版セットアップの問題

(1)最初にインストールしたのはMicrosoft Visual Studio 2010 C++ Expressです。

(2)必要なライブラリをダウンロードしました。私はopengl superbibleの公式サイトから直接ダウンロードしました:http://www.starstonesoftware.com/files/SB5.zip。それから私はローカルフォルダにファイルを抽出した。

(3)次に、新しい空のプロジェクトを作成します。
ファイル - >新規 - >プロジェクト - > Visual C++インストール済みテンプレート - >一般 - >空プロジェクト

(4)freeglutとgltoolsファイルヘッダーの追加インクルードディレクトリパスを追加します。
プロジェクト - >プロパティ - >構成プロパティ - >(設定はすべて=すべての設定) - > C/C++ - >一般 - >追加インクルードディレクトリ。
ここで私は2つのディレクトリを追加します。
(a)のfreeglut:[私のローカルパス] \ SB5 \ SRC \ GLTools \含まれます:[私のローカルパス] \ SB5の\のfreeglut-2.6.0は\
(b)のgltoolsには、

(5)freeglutおよびgltoolsファイルヘッダーの追加の依存関係パスを追加する。
プロジェクト - >プロパティ - >構成プロパティ - >(設定をすべて設定する - >すべての設定) - >リンカ - >入力 - >追加の依存関係。
(a)はfreeglut_static.lib
(B)GLTools.lib

(6)ライブラリディレクトリを追加します。
プロジェクト - >プロパティ - >構成プロパティ - >(設定はすべて=すべての設定) - > VC++ディレクトリ - >ライブラリディレクトリです。 はここで私はfreeglut_static.libのディレクトリとGLTools.libの場所を設定し
(a)のfreeglut_static.lib:[私のローカルパス] \ SB5 \ freeglut-2.6.0 VisualStudio2008Static \リリース
(b)のGLTools \。 LIB:[私のローカルパス] \ SB5 \ VisualStudio2008 \ GLTools \リリース

(7)私は最初の行でWINDOWS.Hが含まれるように、ソースコード(Triangle.cpp)が、私は忘れていなかったをコピーした後。

(8)手順7の後、私はプロジェクトを構築し、すべてがスムーズに進みました。ここにビルドの結果があります:

1>------ Build started: Project: superbible1, Configuration: Debug Win32 ------ 
1> main.cpp 
1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library 
1>GLTools.lib(GLBatch.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLBatch.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info 
1>GLTools.lib(glew.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(glew.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info 
1>GLTools.lib(GLShaderManager.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLShaderManager.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info 
1>GLTools.lib(GLTools.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLTools.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info 
1>GLTools.lib(GLTriangleBatch.obj) : warning LNK4099: PDB 'vc90.pdb' was not found with 'GLTools.lib(GLTriangleBatch.obj)' or at 'C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\vc90.pdb'; linking object as if no debug info 
1> superbible1.vcxproj -> C:\Documents and Settings\Tony\My Documents\Visual Studio 2010\Projects\superbible1\Debug\superbible1.exe 
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 

(9)問題は私がプログラムを実行するときに来ました。私はランタイムエラーが発生します。私はプログラムを中断することを選択した場合

Unhandled exception at 0x00000000 in superbible1.exe: 0xC0000005: Access violation reading location 0x00000000. 

、カーソルがこの行に立ち止まった:私は別の簡単なコードでこのコードを変更する場合はまあ

GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f, 
          0.5f, 0.0f, 0.0f, 
          0.0f, 0.5f, 0.0f }; 

(このメッセージで警告ダイアログがありましたOpenGLのレッドブックから)。このような例:

#define FREEGLUT_STATIC 
#include <Windows.h> 
#include <GL\glut.h> 

void display(void) 

{ 
    /* clear window */ 

    glClear(GL_COLOR_BUFFER_BIT); 


    /* draw unit square polygon */ 

    glBegin(GL_POLYGON); 
     glVertex2f(-0.5, -0.5); 
     glVertex2f(-0.5, 0.5); 
     glVertex2f(0.5, 0.5); 
     glVertex2f(0.5, -0.5); 
    glEnd(); 

    /* flush GL buffers */ 

    glFlush(); 

} 


void init() 
{ 

    /* set clear color to black */ 

    /* glClearColor (0.0, 0.0, 0.0, 0.0); */ 
    /* set fill color to white */ 

    /* glColor3f(1.0, 1.0, 1.0); */ 

    /* set up standard orthogonal view with clipping */ 
    /* box as cube of side 2 centered at origin */ 
    /* This is default view and these statement could be removed */ 

    /* glMatrixMode (GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); */ 
} 

int main(int argc, char** argv) 
{ 

    /* Initialize mode and open a window in upper left corner of screen */ 
    /* Window title is name of program (arg[0]) */ 

    /* You must call glutInit before any other OpenGL/GLUT calls */ 
    glutInit(&argc,argv); 
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 
    glutInitWindowSize(500,500); 
    glutInitWindowPosition(0,0); 
    glutCreateWindow("simple"); 
    glutDisplayFunc(display); 
    init(); 
    glutMainLoop(); 

} 

アプリケーションがうまく実行することができます。だから、コードに何か問題があったと思っていたのかもしれません。誰も助けることができますか?

+0

あなたは '/ NODEFAULTLIB:library'を使ってみましたか? – Shahbaz

+0

いいえ、私はそれを使用していませんでした。それから、私は/ NODEFAULTLIB:LIBCMT(警告メッセージから示唆したように)で再構築しようとしましたが、それでも同じエラーが発生しました。それで、ライブラリで何らかの矛盾が起きたために警告が1つ処理されます。しかし、まだいくつかのエラーがありました。それらはすべて、GLTools.libからpdbファイルが抜けているためです(以前のビルド結果と同じ警告)。これはまだ解決策がありますか?私はまだ初心者です。 –

+0

ねえ、私は窓7と別のコンピュータでこれを試して、それは働いた。さて、なぜ誰も知っていますか? –

答えて

0

GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f, ...は問題ではありません。 butVisualの緑色のデバッグカーソルは、実行されるNEXT行を表示するので、shaderManager.InitializeStockShaders();という疑いがあります。それはクラッシュする。

私はこれが何をするのか分かりませんが、おそらくファイルを読み込みます。具体的には、zipの内容に応じて、理にかなっていると思われるディレクトリからエクスプローラから.exeを直接実行します。

1

私はこれについてもやっています。

あなたはVC++ 2010の関連ディレクトリにすべてのfreeglut/GLTools の.hの.libファイルをコピーすることをお勧めしますすべての例を介して動作しようとしている場合。

あなたはまだソースでWINDOWS.Hを含める必要があり、まだ具体的にVC++ 2010を使用GLTools.lib(リンカ、入力、追加の依存関係を)伝える必要があります。

This 明らかに、すべてのpdbエラーを取り除く方法について説明しています。

+1

Visualのdirsでうんざりするのは、アイディア – Calvin1602

関連する問題