質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Julia

Juliaとは、科学技術計算に特化した、高水準・高性能な動的プログラミング言語です。オープンソースとして公表されており、書き易く動きが早いことが特徴です。

Q&A

解決済

1回答

486閲覧

Julia言語のCImGui.jlパッケージのDemoでエラーが発生する環境があるので動作するように対策したい

ujimushi_sradjp

総合スコア2066

Julia

Juliaとは、科学技術計算に特化した、高水準・高性能な動的プログラミング言語です。オープンソースとして公表されており、書き易く動きが早いことが特徴です。

0グッド

0クリップ

投稿2022/10/07 13:15

Julia言語でOpenGLを利用したImGUIへのラッパーモジュールCImGui.jlを自分の環境に追加し,
付属のDemoソースを動作させたところ,エラーが発生する環境がありました。

うまくいく環境とそうでない環境は次の通りです。

動作OSCPUグラフィックその他
1NGUbuntu 22.04core i7CPU内蔵
2NGWindows 10core i7VirtualBoxVirtualBoxゲスト
3OKUbuntu 22.04Ryzen 3700XNvidia GTX 1650
4OKWindows 10core i5CPU内蔵ノートPC

ケース1, 2でとりあえずデモ画面が表示するようにしたいです。

エラーログ

No.1 Ubuntu 22.04, core i7, 内蔵グラフィックカード

julia> using CImGui julia> include(joinpath(pathof(CImGui),"..","..","demo","demo.jl")) libGL error: MESA-LOADER: failed to open iris: /home/ujimushi/.local/opt/julia-1.8.2/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-13.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri) libGL error: failed to load driver: iris libGL error: MESA-LOADER: failed to open iris: /home/ujimushi/.local/opt/julia-1.8.2/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-13.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri) libGL error: failed to load driver: iris libGL error: MESA-LOADER: failed to open swrast: /home/ujimushi/.local/opt/julia-1.8.2/bin/../lib/julia/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /lib/x86_64-linux-gnu/libLLVM-13.so.1) (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri) libGL error: failed to load driver: swrast ┌ Error: GLFW ERROR: code VERSION_UNAVAILABLE msg: GLX: Failed to create context: GLXBadFBConfig └ @ Main ~/.julia/packages/CImGui/svEI7/demo/demo.jl:27 signal (11): Segmentation fault in expression starting at /home/ujimushi/.julia/packages/CImGui/svEI7/demo/demo.jl:31 glfwSetWindowUserPointer at /home/ujimushi/.julia/artifacts/5aa80c7b8e919cbfee41019069d9b25269befe10/lib/libglfw.so (unknown line) CreateWindow at /home/ujimushi/.julia/packages/GLFW/BWxfF/src/glfw3.jl:502 CreateWindow at /home/ujimushi/.julia/packages/GLFW/BWxfF/src/glfw3.jl:499 [inlined] CreateWindow at /home/ujimushi/.julia/packages/GLFW/BWxfF/src/glfw3.jl:499 unknown function (ip: 0x7f2babf16ae3) _jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined] ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549 jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined] do_call at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:126 eval_value at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:215 eval_stmt_value at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:166 [inlined] eval_body at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:612 jl_interpret_toplevel_thunk at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:750 jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:906 jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:850 ijl_toplevel_eval_in at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:965 eval at ./boot.jl:368 [inlined] include_string at ./loading.jl:1428 _jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined] ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549 _include at ./loading.jl:1488 include at ./client.jl:476 unknown function (ip: 0x7f2babf14d32) _jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined] ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549 jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined] do_call at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:126 eval_value at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:215 eval_stmt_value at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:166 [inlined] eval_body at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:612 jl_interpret_toplevel_thunk at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/interpreter.c:750 jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:906 jl_toplevel_eval_flex at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:850 ijl_toplevel_eval_in at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/toplevel.c:965 eval at ./boot.jl:368 [inlined] eval_user_input at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:151 repl_backend_loop at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:247 start_repl_backend at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:232 #run_repl#47 at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:369 run_repl at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/usr/share/julia/stdlib/v1.8/REPL/src/REPL.jl:355 jfptr_run_repl_64841.clone_1 at /home/ujimushi/.local/opt/julia-1.8.2/lib/julia/sys.so (unknown line) _jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined] ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549 #967 at ./client.jl:419 jfptr_YY.967_30403.clone_1 at /home/ujimushi/.local/opt/julia-1.8.2/lib/julia/sys.so (unknown line) _jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined] ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549 jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined] jl_f__call_latest at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/builtins.c:774 #invokelatest#2 at ./essentials.jl:729 [inlined] invokelatest at ./essentials.jl:726 [inlined] run_main_repl at ./client.jl:404 exec_options at ./client.jl:318 _start at ./client.jl:522 jfptr__start_56736.clone_1 at /home/ujimushi/.local/opt/julia-1.8.2/lib/julia/sys.so (unknown line) _jl_invoke at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2367 [inlined] ijl_apply_generic at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/gf.c:2549 jl_apply at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/julia.h:1839 [inlined] true_main at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/jlapi.c:575 jl_repl_entrypoint at /cache/build/default-amdci4-6/julialang/julia-release-1-dot-8/src/jlapi.c:719 main at julia (unknown line) unknown function (ip: 0x7f2bc35ecd8f) __libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line) unknown function (ip: 0x401098) Allocations: 9681822 (Pool: 9669729; Big: 12093); GC: 17 Segmentation fault (コアダンプ) ujimushi@srad-jp:~$

No.2 Windows 10(VirtualBoxゲストマシン)

julia> using CImGui julia> include(joinpath(pathof(CImGui),"..","..","demo","demo.jl")) ┌ Error: GLFW ERROR: code VERSION_UNAVAILABLE msg: WGL: Failed to create OpenGL context └ @ Main C:\Users\User\.julia\packages\CImGui\svEI7\demo\demo.jl:27 ERROR: LoadError: ReadOnlyMemoryError() Stacktrace: [1] CreateWindow(width::Int64, height::Int64, title::String, monitor::GLFW.Monitor, share::GLFW.Window) @ GLFW C:\Users\User\.julia\packages\GLFW\BWxfF\src\glfw3.jl:502 [2] CreateWindow (repeats 2 times) @ C:\Users\User\.julia\packages\GLFW\BWxfF\src\glfw3.jl:499 [inlined] [3] top-level scope @ C:\Users\User\.julia\packages\CImGui\svEI7\demo\demo.jl:31 [4] include(fname::String) @ Base.MainInclude .\client.jl:444 [5] top-level scope @ REPL[2]:1 in expression starting at C:\Users\User\.julia\packages\CImGui\svEI7\demo\demo.jl:31

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

次のように対策するとうまく動作するようになりました。

No.1 Ubuntu 22.04, core i7, 内蔵グラフィックカード

libstdc++.so.6GLIBCXX_3.4.30のようなエラーメッセージがあるので,標準C++ライブラリ関係のエラーということが分かります。
julia付属共有ライブラリはlibstdc++.so.6.0.29,OS側はlibstdc++.so.6.0.30なので,ここを揃えればうまくいくと思われます。

次のようにjulia付属ライブラリをOS側の共有ライブラリからシンボリックリンクに変更します。

bash

1cd $HOME/.local/opt/julia-1.8.2/lib/julia 2mv libstdc++.so.6.0.29 libstdc++.so.6.0.29.bak 3ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30 libstdc++.so.6.0.29

これで一応動作するようになりました。
ただ,うまくいったもののryzen + nvidiaグラフィックでは再現しないため原因は不明です。

No.2 Windows 10(VirtualBoxゲストマシン)

これは原因がはっきりしていて,VirtualBoxゲストマシンでGuest Additionを追加した状態の
OpenGLのバージョンは2.1でCImGui.jlの動作にはバージョン3以上が必要とのこと。

色々ぐぐると,Mesa3D For WindowsからWindows上で動作する,ソフトウェアOpenGLのラッパーdllをJuliaの実行ファイルがあるフォルダに置くことで対策できました。

Juliaの実行ファイルはインストール方法によって場所が違います。
バージョンが1.8.2の場合,おそらく次のような感じです。

  • インストーラでインストール→%LOCALAPPDATA%\Programs\Julia-1.8.2\bin
  • Microsoft Storeからインストール→%HOMEDRIVE%\%HOMEPATH%\.julia\juliaup\julia-1.8.2+0.x64\bin

一応手持ちの環境全てでデモが動作することが確認できました。
デモしか確認していませんがUIがヌルヌル動くので,内輪のデモ動作とかで利用できたらいいかと思っています。

投稿2022/10/07 13:18

編集2022/10/07 13:23
ujimushi_sradjp

総合スコア2066

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問