

謎のエラーが出てきました。GlutMainLoopのところで毎回発生します。こちらの解決策を教えてもらえますでしょうか？

[code]

    y);
          |  ^~~~~~~~~~~~~~~
    opengltest.c:11:2: warning: implicit declaration of function 'glutMainLoop' [-Wimplicit-function-declaration]
       11 |  glutMainLoop();
          |  ^~~~~~~~~~~~
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\user\AppData\Local\Temp\cc4gTgeX.o:opengltest.c:(.text+0x1c): undefined reference to `glutInit'
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\user\AppData\Local\Temp\cc4gTgeX.o:opengltest.c:(.text+0x28): undefined reference to `glutCreateWindow'
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\user\AppData\Local\Temp\cc4gTgeX.o:opengltest.c:(.text+0x34): undefined reference to `glutDisplayFunc'
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: C:\Users\user\AppData\Local\Temp\cc4gTgeX.o:opengltest.c:(.text+0x39): undefined reference to `glutMainLoop'
    collect2.exe: error: ld returned 1 exit status
    
[/code]

ソースコードはこちらです。

[code]

    #include <GL/gl.h>
    #include <stdio.h>
    #include <GL/glut.h>
    
    void display(void);
    
    int main(int argc,char *argv[]){
        glutInit(&argc,argv);
        glutCreateWindow("hoge");
        glutDisplayFunc(display);
        glutMainLoop();
        return 0;
    }
    
    void display(){
        //PASS!
    }
    
[/code]


CC BY-SA 4.0
2022-11-12T08:53:51.073
92183
2022-11-12T10:48:32.673
53668
question
c opengl
OpenGLをC言語で扱ったファイルがコンパイルできません。


質問のコードには

>
[code]

>     #include <GL/glut.h>
>  
[/code]

とありますが、これは [GLUT - The OpenGL Utility
Toolkit](https://www.opengl.org/resources/libraries/glut/) と思われます。リンク先には

> We direct you to use FreeGLUT found on SourceForge:
> <http://freeglut.sourceforge.net/>. The original GLUT has been unsupported
> for 20 years.

とかなり投げやりな記述しかされていません。より詳しく調べますとGLUTの最終版である3.7は
1998/05/07にリリースされていますが、対応OSはWindows 95とNTまでとなっています。それ以降はメンテナンスされていません。

この時点でとてもお勧めできるライブラリではありません。もちろんリンクが提示されているように互換ライブラリを使うのも一つの手ですが、その場合はまず質問者さんご自身が「24年前に既にサポートが終了してしまっているGLUTの、さらに互換ライブラリを使用する」と認識することが大前提です。間違っても「OpenGLをC言語で扱ったファイル」という認識ではいけません。

ところで、本来であれば `#include <GL/glut.h>` でエラーになったのではないでしょうか？
なんらか対処を行ったのであれば、そのことが説明されなければ第三者には対応方法がわからないことは理解されていますか？

* * *

それとは別に、エラーメッセージからWindows上でMinGW32を使用されているようですが、Windowsにおける標準のコンパイラーはVisual
C++となります。  
他のコンパイラーを使用される場合は、当然ながら標準コンパイラーとの差異を認識した上で利用する必要があります。そうであれば、質問文に使用しているコンパイラーが明記されるべきです。


CC BY-SA 4.0
2022-11-12T10:48:32.673
92185
2022-11-12T10:48:32.673
4236
92183
answer