34

私の単純なOpenGLプログラムでは、出口の再定義に関して次のエラーが発生します。

1>c:\program files\microsoft visual studio 8\vc\include\stdlib.h(406) : error C2381: 'exit' : redefinition; __declspec(noreturn) differs
1>        c:\program files\microsoft visual studio 8\vc\platformsdk\include\gl\glut.h(146) : see declaration of 'exit'

Win32用のNateRobinsのGLUTを使用していますが、VisualStudio2005またはVisualC++ 2005(Express Edition)でこのエラーが発生します。このエラーの原因とその修正方法を教えてください。

4

2 に答える 2

75

原因:

Visual Studioの最近のバージョンに同梱されているstdlib.hには、 exit()関数の定義が異なります(競合しています)。glut.hの定義と衝突します。

解決:

glut.hの定義をstdlib.hの定義でオーバーライドします。コード内のglut.h行の上にstdlib.h行を配置します。

#include <stdlib.h>
#include <GL/glut.h>
于 2008-08-18T09:55:45.883 に答える
20

またはこれ... エラーを修正するには、[ソリューション エクスプローラ] タブでプロジェクト名を右クリックし、[プロパティ] -> [C/C++] -> [プリプロセッサ] -> [プリプロセッサ定義] を選択して、既存の定義に GLUT_BUILDING_LIB をセミコロンで区切って追加します。

于 2009-11-06T18:55:32.970 に答える