OSはWindowXPです
最近Microsoft Visual C++ 2005 Express EditionというのをDLしopenGLをやろうとし
てとりあえずネット上にあった箱を表示させるだけのサンプルソースをコンパイルしよ
うとしたらタイトルのようにエラーが出ました。
1>c:\program files\microsoft visual studio 8\vc\include\gl\glut.h(137) : fatal
error C1083: include ファイルを開けません。'GL/gl.h': No such file or directory
オンラインヘルプを参照したのですが、フォルダはちゃんと存在し、また環境変数
INCLUDEが正しく設定されてない、というのがエラーの条件にあったのでユーザ環境変数
で INCLUDEをつくりC:\Program Files\Microsoft Visual Studio 8\VC\include を足
しましたがダメでした。ちなみに path は
C:\Program Files\Microsoft Visual Studio 8\VC\bin です。
以前までBorandのコンパイラを少し使ってたのですがそれ原因なんでしょうか。
またエラーで'GL/gl.h'がないとありますが、vc\include\GL\glut.hという風になってる
のでgl.hがどこから出たのかもわかりません。
プログラム上の問題じゃなくすみません・・。分かる方いたらお願いします。
Platform SDK はインストールされていますか?
> 1>c:\program files\microsoft visual studio 8\vc\include\gl\glut.h(137) :
fatal
> error C1083: include ファイルを開けません。'GL/gl.h': No such file or directory
(snip)
> またエラーで'GL/gl.h'がないとありますが、vc\include\GL\glut.hという風になってる
> のでgl.hがどこから出たのかもわかりません。
いや、だから、gl/glut.h の 137 行目で、GL/gl.h を要求しているけども、
見つからない、というエラーでしょ。
返信ありがとうございます。
すみませんgl.hというのが存在してそれが必要だという事に気づきませんでした。
gl.hを手に入れinclude\GLに入れ、コンパイルしたらglu.hが足らないというのが出たの
で同じようにまたGLに入れました。
そしてコンパイルすると今度は、
c:\program files\microsoft visual studio 8\vc\include\gl\gl.h(17) : warning
C4068: 不明なプラグマがありました。
1>c:\program files\microsoft visual studio 8\vc\include\gl\gl.h(1527) :
warning C4068: 不明なプラグマがありました。
1>c:\program files\microsoft visual studio 8\vc\include\gl\glu.h(17) : warning
C4068: 不明なプラグマがありました。
1>c:\program files\microsoft visual studio 8\vc\include\gl\glu.h(585) :
warning C4068: 不明なプラグマがありました。
1>c:\program files\microsoft visual studio 8\vc\include\stdlib.h(406) : error
C2381: 'exit' : 再定義 ; __declspec(noreturn) が異なります。
1> c:\program files\microsoft visual studio 8\vc\include\gl\glut.h
(140) : 'exit' の宣言を確認してください。
と出ました。プラグマはよくわからずに//でコメント化したらなくなったんですが、再
定義がどうこうっていうのがオンラインヘルプに”宣言と定義は noreturn の使用と対
応している必要があります”がありますがどう書き換えればいいのか・・。
問題の2文がこれです。上:stdlib.h(406) 下:glut.h(140)
_CRTIMP __declspec(noreturn) void __cdecl exit(__in int _Code);
extern _CRTIMP void __cdecl exit(int);
追加質問ですみません、分かる方いたらお願いします。
> すみませんgl.hというのが存在してそれが必要だという事に気づきませんでした。
> gl.hを手に入れinclude\GLに入れ、コンパイルしたらglu.hが足らないというのが出た
の
> で同じようにまたGLに入れました。
…ひょっとしてそのgl.h, Borlandのコンパイラのやつを持ってきたんじゃないでしょ
ね?
再度確認: Platform SDK はインストールされていますか?
返信ありがとうございます。
仰られたとおりBorlandにあったやつをコピーして持ってきてます。実はいろいろサイト
を見てどこかのサイトからgl.hの入ったOpengl95.exeというのをDLしたんですが解凍
したgl.hの更新日時が1996年でした。その時に、そういやBorandのGLってフォルダ
にもglutとか入れてた気がするなぁと思い見たらgl.hがありその更新日時が2000年
で、新しいやつの方がいいだろうと思いVCのほうにコピーしました。
すいませんPlatform SDKインストールしましたが上記のエラーが出ます。
Borlandのはすべて削除しましたか?
Platform SDKが提供するOpenGL関連のヘッダ・ライブラリを使っていますか?
レス遅れてすみません。
Borlandを消し、gl.h glu.h GLAux.h をSDKからVCへと持ってきました。(glut.hは入っ
てませんでしたがいいのでしょうか)
おかげで不明なプラグマ、のエラーが消えました。ありがとうございます。
しかし2行のエラーがまだ消えません。
glut.hが怪しい。
素性のはっきりした(Win32/VC++対応)のものであるか、確認してください。
いろんなとこからDLして新しいのを入れてたので、どこから持ってきたのかはわから
ないやつでした。しかしGLUTによる手抜きOPENGLというサイトのWindows系OSにインスト
ールする、という章のリンクから持ってきたglut.hをVCに上書きしても同じようなエラ
ーが出ます。お手数かけてすみません、まだ怪しいと思われるところがあったら教えて
ください。
「持ってくる」というのは何でのことですか?
どうも,ヘッダファイルを一個一個,元々のインクルードディレクトリにコピーしている
ようなイメージがあるのですけど……。
SDK入れたら,インクルードディレクトリを指定するところにSDKのINCLUDEディレクトリ
を追加するだけです。
ファイルをコピーする必要は一切ありません。
> しかしGLUTによる手抜きOPENGLというサイトのWindows系OSに
> インストールする、という章のリンクから持ってきたglut.hを
> VCに上書きしても同じようなエラーが出ます。
http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
↑ここに書かれたとおりにやってみました(VS2003)。
#include <GL/glut.h>
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
}
void init(void)
{
glClearColor(0.0, 0.0, 1.0, 1.0);
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
init();
glutMainLoop();
return 0;
}
なんの問題もなく、一発おっけーでした。
エラーもウォーニングも報告されません。
GLには、マルチプラットフォームになっているのでパッケージが何種類もあります。
VCにあったパッケージをインストールしないとエラーになります。
「επιστημηさん」が調べたとおりだと思います。
種類が違うので、「更新日時」も違うのは当然のことです。
「GLには」→「GLは」
修正します。
> http://www.wakayama-u.ac.jp/~tokoi/opengl/libglut.html
> ↑ここに書かれたとおりにやってみました(VS2003)。
お昼休みにちょこちょことVC2005express+PlatformSDKでも追試。
…無問題ですねぇ。