Let's write β

プログラミング中にできたことか、思ったこととか

Juliaでイロイロ苦戦中

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系統の所がスクリプトではエラーになるようですね..原因は不明です。