调用 C 代码:
假设有一个简单的 C 函数:
// example.c
#include <stdio.h>
void hello_c() {
printf("Hello from C!\n");
}
你可以通过以下方式在 Julia 中调用该函数:
# 编译 C 代码
ccall((:hello_c, "example"), Cvoid, ())
# 或者可以在 Julia REPL 中运行以下命令
;gcc -shared -o libexample.so example.c
ccall((:hello_c, "./libexample.so"), Cvoid, ())
调用 Fortran 代码:
假设有一个简单的 Fortran 程序:
! example.f90
subroutine hello_fortran()
print *, "Hello from Fortran!"
end subroutine
你可以通过以下方式在 Julia 中调用该 Fortran 程序:
# 编译 Fortran 代码
ccall((:hello_fortran, "example"), Cvoid, ())
# 或者可以在 Julia REPL 中运行以下命令
;gfortran -shared -o libexample.so example.f90
ccall((:hello_fortran, "./libexample.so"), Cvoid, ())
在这两个示例中,ccall 函数接受三个参数:函数名,库名(对于 C,通常是 .so 文件的路径;对于 Fortran,通常是 .so 文件的路径),以及函数参数的类型。在这两个示例中,函数没有参数,因此 () 表示参数为空。
请注意,为了更方便地调用 C 和 Fortran 代码,你可能需要了解这些代码的 ABI(Application Binary Interface)细节,以确保在 Julia 中正确传递参数和调用函数。这通常包括了函数名的命名约定以及参数的传递方式。
转载请注明出处:http://www.zyzy.cn/article/detail/6650/Julia