まあ、私はこの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();
}
アプリケーションがうまく実行することができます。だから、コードに何か問題があったと思っていたのかもしれません。誰も助けることができますか?
あなたは '/ NODEFAULTLIB:library'を使ってみましたか? – Shahbaz
いいえ、私はそれを使用していませんでした。それから、私は/ NODEFAULTLIB:LIBCMT(警告メッセージから示唆したように)で再構築しようとしましたが、それでも同じエラーが発生しました。それで、ライブラリで何らかの矛盾が起きたために警告が1つ処理されます。しかし、まだいくつかのエラーがありました。それらはすべて、GLTools.libからpdbファイルが抜けているためです(以前のビルド結果と同じ警告)。これはまだ解決策がありますか?私はまだ初心者です。 –
ねえ、私は窓7と別のコンピュータでこれを試して、それは働いた。さて、なぜ誰も知っていますか? –