JuliaでFFIてきな事をしてみようとおもい、ncursesでもよんでみようかなとおもい
function cursesTest() libncurses = dlopen("libncurses") result = ccall(dlsym(libncurses, :initscr), Ptr{Void}, ()) if result == C_NULL println("Failed to initialize screen") return 0 else ccall(dlsym(libncurses, :printw), Ptr{Void}, (Ptr{Char}),"Hello,world") sleep(10) ccall(dlsym(libncurses, :endwin), Int32, ()) println("Initialize successed") return 1 end end cursesTest()
という関数をつくり、適当に実行してみたところ、初期化には成功したという結果になりsleepも実行されている
ようですが、なぜかcurses的な画面にはなりませんでした。replなのが原因かとおもいスクリプト実行してみたところ
libncurses not defined in include at src/boot.j:192 in process_options at /path/to/my/julia/j/client.j:163 in _start at /path/to/my/julia/j/client.j:201 in include at src/boot.j:192 in process_options at /path/to/my/julia/j/client.j:163 in _start at /path/to/my/julia/j/client.j:201 at ncurses.j:16 in include at src/boot.j:192 in process_options at /path/to/my/julia/j/client.j:163 in _start at /path/to/my/julia/j/client.j:201
とエラーが発生しました。何やら奇妙ですまさかスクリプトではローカル変数がつくれない?(いや、そんな訳はないが...と以下のようにテストしてみました)
function test() i = 10 println(i) end test()
これを実行したところ、ちゃんと10が表示されます。
ということはFFI系統の所がスクリプトではエラーになるようですね..原因は不明です。