- ベストアンサー
Visual C++ 2005 Express Editon でのビルドエラー
OpenGLのプログラム環境を自分のPCで整えたいと思い、OpenGL,Windowsなどで検索したホームページなどを参考にして色々やってみたのですが、うまくいきませんでした。OSはXPです。 まずコマンドラインコンパイラとVisual C++ 2005 Express Editionの両方で試してみたのですが、コンパイルまたはビルドの際に fatal error C1083: include ファイルを開けません。'GL/gl.h': No such file or directory というエラーが出てしまいます。 glut.h glut32.dll glut32.libはソースと同じフォルダにあります。 学校では.NET 2003を使用しているのですが、問題なく動いています. glut.hでGL/gl.hを呼び出しているようなのですが・・・ 根本的に設定が違うのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
学校が.Net 2003で、自宅は2005Expressですよね? とりあえず確認ですが、自宅の方にはPlatformSDKは入れましたか? また、入れた後に各種設定は行いましたか? Expressはそれだけを入れた状態だと、基本的に.Netアプリすか作れません。 Windowsアプリを作るためのヘッダやライブラリなどがないためです。 別途PlatformSDKをインストールし、設定する必要があります。 もしまだ行っていないようであれば参考URLをみてやってみてください。 PlatformSDKをインストールすれば、GL/gl.hなどもインストールされますので、それを参照するようにVCを設定してあげてください。
その他の回答 (1)
- chie65536
- ベストアンサー率41% (2512/6032)
#includeプリプロセッサ命令をちゃんと理解していますか? エラーメッセージの意味と対処方法をちゃんと理解していますか? 「fatal error C1083: include ファイルを開けません。'GL/gl.h': No such file or directory」 の意味は 「GLフォルダのgl.hってファイルが無いぞ」 って意味で、対処法は 「GLフォルダにgl.hと言うインクルードファイルを置いておく」 です。 >glut.h glut32.dll glut32.libはソースと同じフォルダにあります。 >glut.hでGL/gl.hを呼び出しているようなのですが 「GLフォルダ」は「ソースと同じフォルダ」ではないので、コンパイル出来なくて当然です。 それ以前に >OpenGLのプログラム環境を自分のPCで整えたい が出来ていません。 glut.h glut32.dll glut32.libは「OpenGLの開発環境のごく一部」であって、全部ではありません。 しかも、glut.hとglut32.libの置き場所を間違っています。 コンパイルしているソースには #include <glut.h> と言う行がある筈です。 #includeプリプロセッサ命令に<>で括って指定すると「デフォルトまたはコンパイラに指定したインクルードパス(フォルダ)にあるファイルをインクルードする」と言う意味になり、このフォルダは『ソースのあるフォルダではありません』←ここ重要 glut.hは、デフォルトのインクルードパスに、つまり、stdio.hやstdlib.hがあるのと同じフォルダになければなりません。 glut.libは、同じように、デフォルトのライブラリパスに、つまり、win32spl.libなど、他のlibファイルがあるのと同じフォルダになければなりません。 因みに、ソースと同一のフォルダにあるインクルードファイルを指定する時は #include "my_file.h" と"で括ります。 また、glut.hの中に #include <GL/gl.h> と言う行があるので、これは「デフォルトのインクルードパスの下にあるGLと言うフォルダの中にあるgl.hをインクルードする」と言う事なので「デフォルトのインクルードパスの下にGLと言うフォルダを作り、その中にOpenGL用のインクルードファイルを置いておく」必要があります。 質問者さんは「デフォルトのインクルードパスの下にGLと言うフォルダを作り、その中にOpenGL用のインクルードファイルを置いておく」と言う作業をしていないので『OpenGLのプログラム環境が整っていない』事になります。 「OpenGLのプログラム環境が整っていない」状態で何度コンパイルした所で、コンパイルが成功する筈はありません。 言ってみれば、stdio.hやstdlib.hが存在しない環境で無理矢理コンパイルを強行しようとしているような物で、この状態ではコンパイルのやり方をどう変えたって絶対にコンパイルは成功しません。