贡献者: 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") # String 类型
a = ccall((:myfun,test), Int32, ())
b = ccall((:myfun2,test), Float64, (Float32,Float32), 2.5, 1.5)
c = ccall(:myfun3, Float64, (Float32,Float32), 2.5, 1.5) # 若 myfun3 的库已加载则无需路径
@__DIR__ 是当前路径。注意 ccall 是一个关键字,不是函数。
ccall((:函数名, 路径), 出参类型, 入参类型表::Tuple, 入参1, 入参2, ...)
(类型,) 即 1-Tuple。没有参数时,() 表示 0-Tuple。
 
 
 
 
 
 
 
 
 
 
 
友情链接: 超理论坛 | ©小时科技 保留一切权利