7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Julia から C を呼び出す簡単なサンプル

Last updated at Posted at 2018-01-09

本日は

JuliaからCの関数を呼び出すというお話です.
JuliaをPythonから,PythonからJuliaを呼び出すというのは結構楽っぽい.
ではJuliaからCを呼び出すのは・・・?

こちらの英語のブログを参考にしました.

Julia calling C: A more minimal example

環境

MacOSX で行なっています.

準備(Cのコードを準備)

二つのdoubleの値の平均を求めるという簡単なサンプルを用意します.

calc_mean.c
double mean(double a, double b) {
    return (a + b) / 2;
}

これを共有ライブラリとしてビルドします:

$ gcc -shared -fPIC -o libmean.so calc_mean.c 
$ ls
calc_mean.c	libmean.so

呼び出す

ターミナルを開いてjuliaを起動します.

julia> cfunc=(x,y)->ccall((:mean,"libmean.so"),Float64,(Float64,Float64),x,y)
julia> cfunc(3.0,4.0)
3.5

やっていることは次の通りです.

  1. mean関数をibmean.soから取り出して戻り値,引数の型情報を指定.
  • 無名関数による cfunc を定義
  • 呼び出し

期待通り3.5が得られましたね.

他にも

[Calling a C function from Julia and passing a 2D array as a pointer of pointers as argument ]
(https://stackoverflow.com/questions/33003174/calling-a-c-function-from-julia-and-passing-a-2d-array-as-a-pointer-of-pointers)

が参考になります.

その他参考になりそうな場所

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?