GLUT(OpenGL Utility Toolkit)をVisual C++ Express Editionで使用してOpenGLアプリケーションをコンパイルする基本的な手順は何ですか?Visual C++ Express EditionでGLUTを使用する
10
A
答えて
9
- Visual C++ Express Edition(VCEE)をお持ちでない場合は、VCEEをダウンロードしてインストールしてください。
- Visual C++ Express Editionのデフォルトインストールは、.Netプラットフォーム用にビルドされています。 OpenGLとGLUTは.NETで完全にサポートされていないので、Windowsプラットフォーム用にビルドする必要があります。このためには、Microsoft Platform SDKが必要です。 (以前のバージョンのVCEEを使用している場合は、Microsoft Platform SDKをダウンロードしてインストールしてください)Windowsプラットフォーム用にビルドするには、Visual C++ Express Editionを設定する必要があります。 GLUT、Nate RobinのWindows port of GLUTをダウンロードして解凍してください。
- あなたプラットフォームSDK /にglut.hを追加/ GL/ディレクトリ
- リンクglut.libとのプロジェクトが含まれます。 (VCEE プロジェクトのプロパティに行く - >追加リンカディレクトリとglut.libを持つディレクトリを追加
- すべてのプログラムがGLUT を使用するように、のWindows/System32にディレクトリにglut.dllを追加します。実行時にそれを見つけることができます。 は
あなたのプログラム。
6
ネイトロビンのサイトでGLUTのポートは2001からですndはそれよりも新しいVisual Studioのバージョン(.NET 2003以降)といくつかの非互換性があります。非互換性は、exit()
の再定義に関するエラーとして現れます。このエラーが表示された場合、2つの解決策があります。
- は、彼らが一致するように、あなたの
stdlib.h
の1とglut.h
でexit()
プロトタイプを交換してください。これはおそらく最良の解決策です。 - あなたのプログラムで
#include <gl/glut.h>
の前に#define GLUT_DISABLE_ATEXIT_HACK
に簡単な解決策があります。
(原因クレジット:。私はもともとTAMU help desk websiteにこのアドバイスを見て)私はアプローチ#1を自分で使用してきた
.NET 2003が出てきた、と同じことがVC++ 2003でglut.h
を変更使用しているので、 、VC++ 2005とVC++ 2008
はここで#1を行い、私が使用しglut.hためのdiffのだ(ただし、適切な#ifdef blocks
にそれはまだVisual Studioの以前のバージョンで動作するように):
--- c:\naterobbins\glut.h 2000-12-13 00:22:52.000000000 +0900
+++ c:\updated\glut.h 2006-05-23 11:06:10.000000000 +0900
@@ -143,7 +143,12 @@
#if defined(_WIN32)
# ifndef GLUT_BUILDING_LIB
-extern _CRTIMP void __cdecl exit(int);
+/* extern _CRTIMP void __cdecl exit(int); /* Changed for .NET */
+# if _MSC_VER >= 1200
+extern _CRTIMP __declspec(noreturn) void __cdecl exit(int);
+# else
+extern _CRTIMP void __cdecl exit(int);
+# endif
# endif
#else
/* non-Win32 case. */
+0
Baxissimo:この一般的なエラーと修正を指摘していただきありがとうございます。ほとんどのOpenGL初心者がこのエラーに直面しているのを見てきました。 –
関連する問題
ありがとう!手順4をよく理解していない方は、私のために次のように翻訳してください(例として)。C:\ Program Files \ Microsoft SDKs \ Windows \ 7.0a \ Include \ GL .Step 5の 'Lib 'ディレクトリは' Include 'と同じレベルにあります(この場合、宣言する必要はなく、追加のリンカーディレクトリも必要です)。 – Gazza