提示コンソール画面ですがライブラリリンクを行うと大量の未定というエラーが出ます。これはなぜでしょうか？
回答にある通りライブラリリンクのやり方を調べたのですがわかりません。  
また最小限の環境を再現して実行しましたがリンク出来ません。  
利用ライブラリ  
stb  
opengl  
glew  
glfw  
freetype

mingw32  
[![画像の説明をここに入力](https://i.stack.imgur.com/sfD2O.png)](https://i.stack.imgur.com/sfD2O.png)  
ソースコード: <https://www.dropbox.com/s/pa3z0ih18lfcqxt/AAEditor.zip?dl=0>

参考サイトC：https://www.glfw.org/docs/3.3/build_guide.html  
参考サイトA:  
<https://stackoverflow.com/questions/18475234/undefined-references-to-imp-
glew-functions-with-mingw-gcc>

参考サイトB：http://glew.sourceforge.net/install.html

##### 環境

windows 10 home  
VSCode

##### 入手先

glfw : <https://www.glfw.org/>  
glew : <http://glew.sourceforge.net/>

##### 調べたこと

int main()関数 Main.cppを追加  
追記： glew/lib/x64/ファイルのglew32.lib等にファイルを置き換えたら以下のコマンドエラーが変化しました。

glfwを再ダウンロードしてmingwというフォルダの中を提示画像のディレクトリに移動  
`$(CXX) $^ -o $@ -L/lib -lglfw3 -lopengl32`  
`$(CXX) $^ -o $@ -lglfw3dll -lopengl32`

最小コード: <https://www.glfw.org/documentation.html>  
だけでコンパイルをしてみましたが同じ未定義のエラーが出ます。

またgccでリンクが出来ない以下のURLを確認しましたが該当しませんでした。  
<https://teratail.com/questions/89964>

`int main(){printf("Hello
World");}`という単純なソースファイルをコンパイルして見ましたが通常通りコンパイルが通り実行して文字が表示されました。

という最小環境をにして試しましたが同じエラー出て未定義となります。  
コンパイルは通った。  
リンクする順番を入れ替えたりしたが同じ結果だった。  
インクルードライブラリを確認。  
参考サイトBより "GLEW_BUILDプリプロセッサ定数を GLEW_STATICに変更する必要もあります。そうしないと、ビルドエラーが発生します。"
文より

```

    #define GLEW_BUILD GLEW_STAIC
    #define GLEW_STAIC GLEW_BUILD
    
```

を試しました。

参考サイトを参考に提示コードのように実装しましたが依然として同じエラーが大量に出ます。また日本語に訳して見ているのですがこの文章があいまいでわかりません。  
"Makefileにルールを追加して、このプリプロセッサトークンを定義します。#define ..." どういう意味なのでしょうか？

##### コマンドプロンプト(一部省略)

```

    > make
    g++ -MMD -MP -DGLEW_STATIC -IC:/glew-2.1.0/include -IC:/glfw-3.3.6/include -IC:/glm -IC:/stb -IC:/freetype-2.3.5-1/include -IC:/freetype-2.3.5-1/include/freetype2  -c source/Main.cpp -o object/Main.o
    g++ object/Window.o object/Help.o object/Simple.o object/Shader.o object/Model.o object/Actor.o object/Primitive_Shape.o object/Text.o object/Resource.o object/Init.o object/Main.o object/Camera.o object/Transform.o object/Sprite.o object/Shape.o object/Render.o -o test -LC:/glew-2.1.0/lib/Release/Win32 -LC:/glfw-3.3.6/lib-mingw -LC:/freetype-2.3.5-1/lib -lglew32s -lopengl32 -lglfw3 -lgdi32 -lfreetype
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: object/Window.o:Window.cpp:(.text+0x26a): undefined reference to `glfwTerminate'
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: object/Window.o:Window.cpp:(.text+0x2e9): undefined reference to `glfwMakeContextCurrent'
    
    //長いので省略
    
    collect2.exe: error: ld returned 1 exit status
    Makefile:14: recipe for target 'GL' failed
    make: *** [GL] Error 1
    
```

##### Window.cpp (上部)

```

    #define GLEW_STATIC
    #ifdef GLEW_STATIC
    #  define GLEWAPI extern
    #else
    #  ifdef GLEW_BUILD
    #    define GLEWAPI extern __declspec(dllexport)
    #  else
    #    define GLEWAPI extern __declspec(dllimport)
    #  endif
    #endif
    
    
    #include "../header/Window.hpp"
    
    #include <iostream>
    #include <limits.h>
    #include <chrono>
    #include <thread>
    #include <time.h>
    #include <stdio.h>
    #include <wchar.h>
    
    //#include <GL/glew.h>
    #include <GLFW/glfw3.h>
    
    #include "../header/Window.hpp"
    #include "../header/Init.hpp"
    #include "../header/Window_use.hpp"
    #include <string>
    
    
    // ##################################### コンストラクタ ##################################### 
    FrameWork::Window::Window(GLFWwindow* win, glm::ivec2 s,const char* t)
    {
        //windowSize  = size;
        window = win;
        size = s;
        title = std::string(t);
        prevMouseVector = glm::dvec2(0,0);
    
```

##### Makefile

```

    PRG         :=GL
    SRC_DIR     :=source
    INC_DIR     :=-IC:/glew-2.1.0/include -IC:/glfw-3.3.6/include -IC:/glm -IC:/stb -IC:/freetype-2.3.5-1/include -IC:/freetype-2.3.5-1/include/freetype2 
    LIB_DIR     :=-LC:/glew-2.1.0/lib/Release/Win32 -LC:/glfw-3.3.6/lib-mingw -LC:/freetype-2.3.5-1/lib
    LIB_LST     :=-lglew32s -lopengl32 -lglfw3 -lgdi32 -lfreetype 
    OBJ_DIR     :=object
    DEP_DIR     :=object
    DEP         :=$(wildcard $(DEP_DIR)/*.d)
    SRC         :=$(wildcard $(SRC_DIR)/*.cpp)
    OBJ         :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
    CXXFLAGS    :=-MMD -MP -DGLEW_STATIC $(INC_DIR)
    
    $(PRG): $(OBJ)
        $(CXX) $^ -o $@ $(LIB_DIR) $(LIB_LST)
     
    
    $(OBJ_DIR)/%.o: source/%.cpp
        $(CXX) $(CXXFLAGS) -c $< -o $@
    -include $(DEP)
        
    clean:
        rm -f ./$(OBJ_DIR)/*.o ./$(OBJ_DIR)/*.d $(PRG)
        
    
```
CC BY-SA 4.0
2022-01-10T01:22:46.653
85592
2022-02-01T01:00:29.080
2022-02-01T01:00:29.080
question
c++ windows mingw
g++ glfwがリンクできない。
cubick さんが紹介してくれた [Undefined References to _imp____glew* functions with minGW
gcc](https://stackoverflow.com/questions/18475234/undefined-references-to-imp-
glew-functions-with-mingw-gcc) を要約すると、

  * もしglewをスタティックリンクしたいなら、(ダイナミックリンクしたいならあてはまらない)
  * マクロ `GLEW_STATIC` を `#include "glew.h"` より前に定義せよ。`Makefile`でやるといいかも
  * マクロ `GLEW_BUILD` を定義してはいけない

Makefileを以下のようにして、`make clean`後に再ビルドするといいでしょう。

```

    CXXFLAGS = -std=c++11 -MMd -MP -DGLEW_STATIC
    
    $(OBJ_DIR)/%.o: source/%.cpp
        $(CXX) $(CXXFLAGS) -c $< -o $@
    
    
```
CC BY-SA 4.0
2022-01-21T00:23:13.180
85824
2022-01-21T00:23:13.180
3475
85592
answer
> エラーメッセージは同じです。

と言いつつ変わっていますよね。[リビジョン16](https://ja.stackoverflow.com/revisions/85592/16)では

>
```

>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Camera.o:Camera.cpp:(.text+0x81): undefined reference to
> `_imp____glewGenVertexArrays'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Camera.o:Camera.cpp:(.text+0x9c): undefined reference to
> `_imp____glewGenBuffers'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Camera.o:Camera.cpp:(.text+0x113): undefined reference to
> `_imp____glewBindVertexArray'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Camera.o:Camera.cpp:(.text+0x128): undefined reference to
> `_imp____glewBindBuffer'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Camera.o:Camera.cpp:(.text+0x145): undefined reference to
> `_imp____glewBufferData'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Camera.o:Camera.cpp:(.text+0x18e): undefined reference to
> `_imp____glewEnableVertexAttribArray'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Camera.o:Camera.cpp:(.text+0x1a0): undefined reference to
> `_imp____glewVertexAttribPointer'
>  
```

とあり`_imp____glewGenVertexArrays`が要求されています。対して[リビジョン17](https://ja.stackoverflow.com/revisions/85592/17)では

>
```

>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Window.o:Window.cpp:(.text+0x51d): undefined reference to
> `glfwGetWindowUserPointer'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Window.o:Window.cpp:(.text+0x54d): undefined reference to
> `glfwGetWindowUserPointer'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Window.o:Window.cpp:(.text+0x5a1): undefined reference to
> `glfwGetFramebufferSize'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Window.o:Window.cpp:(.text+0x5d1): undefined reference to
> `glfwGetWindowUserPointer'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Window.o:Window.cpp:(.text+0x63f): undefined reference to
> `glfwGetWindowUserPointer'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Window.o:Window.cpp:(.text+0x6b0): undefined reference to
> `glfwGetWindowUserPointer'
>     c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe:
> object/Window.o:Window.cpp:(.text+0x74f): undefined reference to
> `glfwGetCursorPos'
>  
```

とあり`glfwGetWindowUserPointer`が要求されています。

Windowsにおいて`.LIB`ファイルには２種類の形式が存在し、

  * static link library  
必要なコードはこのファイルに含まれていて実行ファイルが作成できる。

  * import library  
実行時に必要となるDLL名が含まれている。リンクに成功しても実行時にDLLが必要となる。

という違いがあります。  
`GLEW_STATIC`が登場していますが、GLEWに関してはコンパイル時に`GLEW_STATIC`を指定したら、前者static link
libraryの方の`.LIB`ファイルをリンカに渡す必要があります。逆に`GLEW_STATIC`を指定しない場合はたぶんimport
libraryの方の`.LIB`ファイルをリンカに渡す必要があります。

同様の問題がGLFWに必要であり、今`glfwGetWindowUserPointer`が要求されているということはstatic link
libraryの方の`.LIB`をリンカに渡す必要があります。もしくはGLFWの使用に従ってコンパイル時に何らかの指定を行い、import
libraryの方の`.LIB`ファイルを要求するようにコンパイルする必要があります。

入手元やバージョンの記載を求めたのも、どのように指定するべきかを確認するためです。

* * *

といった事情があり、

> -Lですがgccのlibフォルダに各ライブラリの.libをコピーしたので指定する必要がないはずなのですが。

この操作はまずいです。static link libraryが格納されているディレクトリやimport
libraryが格納されているディレクトリを`-L`で指定、切り替えできるようにするべきです。

それはそうと、質問者さんとしてはGLEWおよびGLFWについて、実行時にDLLを必要とするdynamic linkか、それとも必要としないstatic
linkか、どちらを求めているのでしょうか？  
（それがGLEW / GLFW、その他が双方をサポートするか、一方のみかはそれぞれのライブラリ次第ではありますが）
CC BY-SA 4.0
2022-01-21T23:18:22.393
85850
2022-01-21T23:18:22.393
4236
85592
answer
試行錯誤の経過が山のようにあって迷走しているようですが、以下2点の処置を行うことで警告は出ますがリンクは終了してexeが出来るようになります。

  1. リンクするライブラリの指定を以下にする  
(最初の4つは記述する順番もこの通りにする)

```

    -lglew32s -lopengl32 -lglfw3 -lgdi32 -lfreetype
    
```

  2. ソースのどれか(例えばWindows.cpp)に`int main()`関数を組み込む

* * *

最初の点は、以下2つの記事を見つけて、コメントに定義順番も影響するとか書かれていたので色々と試して上記になっています。  
`-lfreetype`は何処に置いても良いようですが。  
[Linker problems with GLEW and
CodeBlcks](https://stackoverflow.com/q/11788455/9014308)  
[GLFW MinGW link error](https://stackoverflow.com/q/22008845/9014308)

2つ目は上記対処を行っても`undefined reference to 'WinMain@16'`が消えなかったので検索して以下にたどりつきました。  
[mingw32での「undefined reference to `WinMain@16'」](https://cat-
in-136.github.io/2010/03/mingw32undefined-reference-to-winmain16.html)  
[UnicodeでMingw32の落とし穴〜_tWinMain/wWinMain問題など〜](https://cat-
in-136.github.io/2012/04/unicodemingw32twinmainwwinmain.html)

`Mingw32`での問題らしいので、`MSYS2/MinGW-w64
(64bit/32bit)`等にすれば対処は不要かもしれませんが、とりあえず質問の当初の環境での対処方法として。

ただしリンク時に `Warning: corrupt .drectve at end of def file`
という警告が表示されるので、完璧にするにはまだ対処(.defファイル作成?)が必要でしょう。

一応実行ファイル`GL.exe`は出来て起動出来ます。  
確認のためだけに何の処理もせず終了する`int
main()`関数を入れたので、起動してすぐに終了しましたが、とりあえず動作する実行ファイルが出来上がったと考えられます。  
まあ実際の対象であるライブラリプロジェクトの関数などは何も呼んでいないので確認はこれからになるでしょうが、先に進めることは出来るでしょう。

* * *

環境構築の手順としては以下のようにしました。

この辺の記事をもとにSourceForgeから`mingw-get-setup.exe`をダウンロードして`C:\MinGW`にインストール。  
PATHは`C:\MinGW\bin`だけ追加。  
[MinGW - Minimalist GNU for Windows](https://sourceforge.net/projects/mingw/)  
[MinGW インストール手順](https://qiita.com/ryo-sato/items/00c17469978e47d91a09)  
[MinGWインストール手順](https://web.yokkaichi-u.ac.jp/yucc/archives/1537)

[The OpenGL Extension Wrangler
Library](https://sourceforge.net/projects/glew/files/glew/2.1.0/)から`glew-2.1.0-win32.zip`をダウンロードして`C:\glew-2.1.0`に展開。  
PATHに`C:\glew-2.1.0\bin\Release\Win32`を追加(これは要らないかも?)

[GLFW > Download](https://www.glfw.org/download)から32-bit Windows
binaries`glfw-3.3.6.bin.WIN32.zip`をダウンロードして`C:\glfw-3.3.6`に展開。  
PATHに`C:\glfw-3.3.6\lib-mingw`を追加

[g-truc/glm/GLM
0.9.9.8](https://github.com/g-truc/glm/releases)から`glm-0.9.9.8.zip`をダウンロードして`C:\glm`に展開。

[nothings/stb](https://github.com/nothings/stb)から`stb-
master.zip`をダウンロードして`C:\stb`に展開。

[FreeType for
Windows](http://gnuwin32.sourceforge.net/packages/freetype.htm)からBinaries`freetype-2.3.5-1-bin.zip`をダウンロードして`C:\freetype-2.3.5-1`に展開。  
PATHに`C:\freetype-2.3.5-1\bin`を追加

* * *

`Makefile`を以下のように変更しています。  
それぞれのライブラリのファイルを移動/集約せずに、分けたままMakefileの中で指定を追加するようにしています。

```

    PRG         :=GL
    SRC_DIR     :=source
    INC_DIR     :=-IC:/glew-2.1.0/include -IC:/glfw-3.3.6/include -IC:/glm -IC:/stb -IC:/freetype-2.3.5-1/include -IC:/freetype-2.3.5-1/include/freetype2 
    LIB_DIR     :=-LC:/glew-2.1.0/lib/Release/Win32 -LC:/glfw-3.3.6/lib-mingw -LC:/freetype-2.3.5-1/lib
    LIB_LST     :=-lglew32s -lopengl32 -lglfw3 -lgdi32 -lfreetype 
    OBJ_DIR     :=object
    DEP_DIR     :=object
    DEP         :=$(wildcard $(DEP_DIR)/*.d)
    SRC         :=$(wildcard $(SRC_DIR)/*.cpp)
    OBJ         :=$(addprefix $(OBJ_DIR)/,$(patsubst %.cpp,%.o,$(notdir $(SRC))))
    CXXFLAGS = -std=c++11 -MMD -MP -DGLEW_STATIC $(INC_DIR)
    
    $(PRG): $(OBJ)
        $(CXX) $^ -o $@  $(LIB_DIR) $(LIB_LST)
     
    
    $(OBJ_DIR)/%.o: source/%.cpp
         $(CXX) $(CXXFLAGS) -c $< -o $@
    -include $(DEP)
        
    clean:
        rm -f ./$(OBJ_DIR)/*.o ./$(OBJ_DIR)/*.d $(PRG)
    
```

* * *

なかなか原因を見つける嗅覚みたいなものが育たないようですね。  
**Makefile:14: *** multiple target patterns. Stop.**
については、自身でコメントされたようにタブ文字で始めるべき以下の3行の最初が空白文字になっていることが原因でしょう。  
[OpenCV mingw-make32 Makefile:12: *** multiple target patterns.
Stop](https://stackoverflow.com/q/28463358/9014308)  
繰り返し発生するのは、VSCodeエディタや拡張機能の設定などで、例えばセーブとかコンパイルとかのチェックポイント毎にタブ文字を空白に変換してしまうとかでは？

```

        $(CXX) $^ -o $@ $(LIB_DIR) $(LIB_LST)
    
```

```

        $(CXX) $(CXXFLAGS) -c $< -o $@
    
```

```

        rm -f ./$(OBJ_DIR)/*.o ./$(OBJ_DIR)/*.d $(PRG)
    
```

上記3行の最初がどれかでもタブ文字でない中途半端な変更だと以下のようにそれぞれエラーになります。

```

    Makefile:14: *** multiple target patterns.  Stop.
    
    Makefile:18: *** multiple target patterns.  Stop.
    
    Makefile:22: *** missing separator.  Stop.
    
```

* * *

**６４ビット版？に置き替えたらエラコードが変化しました** についても、`//長いので省略`したという部分にヒントがあったはずです。  
おそらく32bit/64bitには関係なく、私の回答の初めに **2.** で指摘した`int main()`関数が無いことで発生しているものと思われます。

32bit版のままでも、上記Makefileの空白文字をタブ文字に変えただけだと、以下のようにエラーになります。  
`//長いので省略`した部分にあったと思われる `undefined reference to 'WinMain@16'` が発生しているのでは？

```

    g++ -MMD -MP -DGLEW_STATIC -IC:/glew-2.1.0/include -IC:/glfw-3.3.6/include -IC:/glm -IC:/stb -IC:/freetype-2.3.5-1/include -IC:/freetype-2.3.5-1/include/freetype2  -c source/Window.cpp -o object/Window.o
    g++ object/Window.o object/Help.o object/Simple.o object/Shader.o object/Model.o object/Actor.o object/Primitive_Shape.o object/Text.o object/Resource.o object/Init.o object/Camera.o object/Transform.o object/Sprite.o object/Shape.o object/Render.o -o GL -LC:/glew-2.1.0/lib/Release/Win32 -LC:/glfw-3.3.6/lib-mingw -LC:/freetype-2.3.5-1/lib -lglew32s -lopengl32 -lglfw3 -lgdi32 -lfreetype
    Warning: corrupt .drectve at end of def file
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../libmingw32.a(main.o):(.text.startup+0xc0): undefined reference to `WinMain@16'
    collect2.exe: error: ld returned 1 exit status
    Makefile:14: recipe for target 'GL' failed
    mingw32-make: *** [GL] Error 1
    
```

もともと作っていたソースコードを変更しなくても、例えばコメントで紹介されていた **GLFW なら簡単なサンプルコードがある**
の[サンプルコード](https://www.glfw.org/documentation.html)
を`main.cpp`というファイルにしてプロジェクトの`source`フォルダに入れておき、コメントでの確認では他のファイルを消してしまったようですが、そういったことは何も行わずに`main.cpp`を追加しただけで`mingw32-make`すれば、以下のようにリンクして実行ファイルが出来ます。

```

    g++ -MMD -MP -DGLEW_STATIC -IC:/glew-2.1.0/include -IC:/glfw-3.3.6/include -IC:/glm -IC:/stb -IC:/freetype-2.3.5-1/include -IC:/freetype-2.3.5-1/include/freetype2  -c source/main.cpp -o object/main.o
    g++ object/main.o object/Window.o object/Help.o object/Simple.o object/Shader.o object/Model.o object/Actor.o object/Primitive_Shape.o object/Text.o object/Resource.o object/Init.o object/Camera.o object/Transform.o object/Sprite.o object/Shape.o object/Render.o -o GL -LC:/glew-2.1.0/lib/Release/Win32 -LC:/glfw-3.3.6/lib-mingw -LC:/freetype-2.3.5-1/lib -lglew32s -lopengl32 -lglfw3 -lgdi32 -lfreetype
    Warning: corrupt .drectve at end of def file
    
```
CC BY-SA 4.0
2022-01-23T15:17:08.537
85882
2022-01-28T09:58:39.020
2022-01-28T09:58:39.020
26370
26370
85592
answer
```

    g++ object/Window.o object/Help.o object/Simple.o object/Shader.o object/Model.o object/Actor.o object/Primitive_Shape.o object/Text.o object/Resource.o object/Init.o object/Main.o object/Camera.o object/Transform.o object/Sprite.o object/Shape.o object/Render.o -o test -LC:/glew-2.1.0/lib/Release/Win32 -LC:/glfw-3.3.6/lib-mingw -LC:/freetype-2.3.5-1/lib -lglew32s -lopengl32 -lglfw3 -lgdi32 -lfreetype
    c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: object/Window.o:Window.cpp:(.text+0x26a): undefined reference to `glfwTerminate'
    
```

にだけ反応すると、mingwのgccではライブラリの指定(-l)とリンク対象となるオブジェクトファイルのどちらがコマンドラインの前に来るかでリンクできるできないが変わることがあります。  
(Linuxだとどちらが先でも同じになります。Cygwinもmingwと同じだったと思います)

試しに、Makefileの

```

    $(PRG): $(OBJ)
        $(CXX) $^ -o $@  $(LIB_DIR) $(LIB_LST)
    
```

を

```

    $(PRG): $(OBJ)
        $(CXX) $(LIB_DIR) $(LIB_LST) $^ -o $@
    
```

にしてみてください。
CC BY-SA 4.0
2022-01-28T15:13:45.840
85987
2022-01-28T15:13:45.840
51136
85592
answer