Open2

OpenSiv3D on ArchLinuxまとめ

kokastarkokastar

ライブラリのバージョンは合わせろ

ビルド時のエラーで詰まった①
解決方法は、バージョンがREADMEに書いてあるのでそれに合わせる

GCCは合わせなくても多分行けるけどBoostは合わせないとだめだったので、このサイトを参考に古いバージョンを入れた

kokastarkokastar

ソースコードを自力で修正

ビルド時のエラーで詰まった②
基本はエラーメッセージを見ていい感じに治す

僕が発生したのは2件

/home/USERNAME/CLionProjects/PROJECTNAME/OpenSiv3D/Linux/../Siv3D/include/ThirdParty/simde/x86/sse2.h:3514:30: エラー: redefinition of ‘__m128i simde_mm_loadu_epi64(const void*)’
 3514 |   #define _mm_loadu_epi64(a) simde_mm_loadu_epi64(a)
      |                              ^~~~~~~~~~~~~~~~~~~~

みたいなエラーが出た。重複して宣言してる?っぽいので、この行をコメントアウトしたらうまく行った。
64だけではなく32/16/8もあるので同様にして解決

/home/USERNAME/CLionProjects/PROJECTNAME/OpenSiv3D/Siv3D/src/ThirdParty/GLFW/x11_window.c: 関数 ‘_glfwCreateInputContextX11’ 内:
/home/USERNAME/CLionProjects/PROJECTNAME/OpenSiv3D/Siv3D/src/ThirdParty/GLFW/x11_window.c:2028:55: エラー: 互換性のないポインタ型から 1 番目の ‘s3d_PreeditAttributes’ の引数に渡しています [-Wincompatible-pointer-types]
 2028 |     XVaNestedList preeditAttr = s3d_PreeditAttributes(window);
      |                                                       ^~~~~~
      |                                                       |
      |                                                       _GLFWwindow *

これは、型があってないって言われた。なので、エラーが起きてる箇所を以下のように修正した

XVaNestedList preeditAttr = s3d_PreeditAttributes((XPointer)window);

キャストするだけで治るし、逆に今までどうやって動いてたのか...