2010-12-25 1 views
0

でコンパイルされた単純なopenGL Dプログラムがありますが、libglut.aとリンクすることはできません。私はいくつかの異なるコマンドラインを試してみた:libglut.aへのリンクがD

$ dmd life.d -lglut 
$ dmd life.d -L-lglut 
$ dmd life.d -L/usr/lib/libglut.a 
$ dmd life.d /usr/lib/libglut.a 

これらのすべては、次のエラーを印刷:

life.o:(.data+0x10): undefined reference to `_D1c2gl4glut12__ModuleInfoZ' 
life.o:(.data+0x14): undefined reference to `_D1c2gl2gl12__ModuleInfoZ' 
life.o: In function `_Dmain': 
life.d:(.text._Dmain+0x72): undefined reference to `_D1c2gl4glut8glutInitT1c2gl4glut10pfglutInit' 
life.d:(.text._Dmain+0x87): undefined reference to `_D1c2gl4glut19glutInitDisplayModeT1c2gl4glut21pfglutInitDisplayMode' 
life.d:(.text._Dmain+0xa1): undefined reference to `_D1c2gl4glut18glutInitWindowSizeT1c2gl4glut20pfglutInitWindowSize' 
life.d:(.text._Dmain+0xc2): undefined reference to `_D1c2gl4glut16glutCreateWindowT1c2gl4glut18pfglutCreateWindow' 
life.d:(.text._Dmain+0xd7): undefined reference to `_D1c2gl4glut15glutDisplayFuncT1c2gl4glut17pfglutDisplayFunc' 
life.d:(.text._Dmain+0xe6): undefined reference to `_D1c2gl4glut12glutMainLoopT1c2gl4glut14pfglutMainLoop' 
collect2: ld returned 1 exit status 
--- errorlevel 1 

は私のコマンドラインに問題があるのか​​、それが何か他のものでしょうか?

+0

これは修正されていませんが、古くなっているためglutを使用しません。 – Quonux

答えて

1

これらは、Dコードからマングルされたシンボルのように見えます。前の質問で、互換性レイヤーを使用していたと言いました。ファイルやライブラリをビルドに含めることを確認しましたか?

+0

私のプログラムは 'c.gl.glut'と' c.gl.gl'をインポートします。私はコマンドに '-I/absolute/path/to/glut.d -I/absolute/path/to/gl.d'を追加しましたが、同じエラーが出ました。それはあなたが私に言いたいことですか? – Max

+0

@Max 'dmd'はインポートを見つけることができますが、何らかの理由でそれらを自動的にコンパイルしません。 'dmd -L-lglut life.d /absolute/path/to/glut.d/absolute/path/to/gl.d'のように、すべての関連ファイルを実行する必要があります。 –

+0

良いニュース:OpenGLファイルが表示されるようになりました。ご協力いただきありがとうございます。悪いニュース:それは私に何千もの変換エラー(D文字列を 'char []'に変換するもの)を上回っている。OpenGLをDと一緒に使う方法を再考する必要があると思う。 – Max

関連する問題