贡献者: addis
extern "C" {}
中。
int myfun () {
return 2;
}
double myfun2 (float i, float j) {
return i+j;
}
编译动态链接库:
gcc -o test.o -c test.c
gcc -shared -o test.so test.o -fPIC
在 Julia 中调用
test = joinpath(@__DIR__, "test.so")
a = ccall((:myfun,test), Int32, ())
b = ccall((:myfun2,test), Float64, (Float32,Float32), 2.5, 1.5)
其中 @__DIR__
是当前路径。注意 ccall
是一个关键字,不是函数。:函数名
的类型是 Symbol
。第二个参数是返回类型,第三个参数是函数的参数类型,后面是具体的参数。如果只有一个参数,用 (类型,)
即 1-Tuple。没有参数时,()
表示 0-Tuple。