2012-01-07 16 views
0

私はOpenGLを学ぶのに成功してSDLを使用していますが、GLUTを使用しているチュートリアルに従っており、初心者には使いやすいように見えます。コンテンツをより早く。私はこれは簡単で素早く簡単なプロセスだと思っていましたが、GLUTコンテンツをコンパイルしようとすると、次の問題に遭遇しています(MinGWを使用して) (私はGLUTをダウンロードし、 libフォルダにlibファイルを展開していますが、それに対してリンクしています。システムフォルダに.DLLがあり、正常に呼び出されています。GLUTを使用した未定義参照

私が間違ってやっていると、任意のヘルプや提案のために感謝される

ビルドメッセージ(現時点では何もしませんが、コンパイルする必要があります)コンテンツの以下の小片コンパイル:

#include <stdlib.h> 
#include <GL/glut.h> 

static int day = 0, year = 0; 

void init() 

{ 

glClearColor(0.0,0.0,0.0,0.0); 
glShadeModel(GL_FLAT); 

} 

void display(void) 

{ 

glClear(GL_COLOR_BUFFER_BIT); 
glColor3f(1.0,1.0,1.0); 

glPushMatrix(); 
glutWireSphere(1.0,20,16); 
glRotatef((GLfloat) year, 0.0,1.0,0.0); 
glTranslatef(2.0,0.0,0.0); 
glRotatef((GLfloat) day, 0.0, 1.0, 0.0); 
glutWireSphere(0.2,10,8); 
glPopMatrix(); 
glutSwapBuffers(); 

} 

//void reshape(int w, int h) 

int main(int argc, char **argv) 

{ 



} 

ビルダーエラー:

C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `__glutInitWithExit'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `__glutCreateWindowWithExit'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `__glutCreateMenuWithExit'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glClearColor'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glShadeModel'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glClear'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glColor3f'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glPushMatrix'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `glutWireSphere'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glRotatef'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glTranslatef'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glRotatef'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `glutWireSphere'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `_imp__glPopMatrix'| 
C:\Documents and Settings\User\Desktop\test.o:test.cpp|| undefined reference to `glutSwapBuffers'| 
||=== Build finished: 15 errors, 0 warnings ===| 

答えて

0

いいえ、あなたは(そのことについてもGL)供給過剰にリンクされていません。またはそれは悪いバージョンですが、私はそれを疑っています。プロジェクトの設定やMakefileを投稿することができます。 _imp__gl*のものはlibGLで、glut*のものは明らかにglutです。また、リンカーが理解できるライブラリ形式とリンクしていることを確認してください。 * .libファイルは、通常、MS-COFF形式です。これは、Microsoft独自のCOFF規格です。 mingw(ld)のリンカーはこのファイルをリンクできません。 .a拡張子(通常は)を持つ静的ライブラリが必要です。

+0

で.dllファイルにアクセスするためにWINDOWS.HでWindowsリンク上のリンカーと思われる、私は、httpからヘッダーおよびLIBSと.dllを得た://ユーザー.xml.com /〜nate/glut.htmlと私のCodeBlocks IDEは、以下をリンクするように設定されています:-lmingw32 -lSDLmain -lSDL -lSDL_ttf -lSDL_image -lglut32 -lopengl32 -lglu32 -lglut32win –

+0

私の編集を参照してください。ところで、それがオプションであれば、* nixボックスでの開発を検討します。なぜならライブラリをインストールするのは簡単でパッケージマネージャーから起こるからです。 –

+1

あなたの助けていただきありがとうございます。あなたの編集された答えは解決策を提供しました。私は.aが.libと同様にリンクされる可能性があると考えました。また、glut.hの前にwindows.hをインクルードする必要がありました。ありがとうございました! –

2

はい、Windows上で動作させるには、このコードを組み込む必要がありました。

#if defined(_WIN32) || defined(_WIN64) 
#include <windows.h> 
#endif 

それは私がコードブロックを使用していますSystem32に