Tag: julia lang

从Julia调用C函数并将2D数组作为指针作为参数传递

的背景 我正在尝试使用ccall Julia函数来使用C语言编写的代码。我知道如何将数组作为参数传递给期望int *arg的函数。 例如,尝试使用此C函数 void sum_one(int *arr, int len) { for (int i=0; i<len; i++){ arr[i]++; } } 这个Julia代码有效 x = collect(Cint, 1:5) ccall((:sum_one, “/path/to/mylib.so”), Void, (Ptr{Cint}, Cint), x, 5) 问题 C函数似乎没那么直接,期望指向指针( int **arg )的指针被用作二维矩阵。 说这个 void fill_matrix(int **arr, int row, int col) { for (int i=0; i<row; i++){ for (int j=0; j<col; j++){ […]

Julia – C界面与非基本类型

我正在扩展使用C库的Julia包。 我需要从Julia调用一些C函数。 它们看起来像这样: struct contained { int x; int y; int z; }; struct mystruct { int n; contained* arr; }; mystruct* mk_mystruct(int n, contained* arr); void use_mystruct(mystruct* foo); 我还在Julia中声明了相应的类型: type contained x::Int64 y::Int64 z::Int64 end type mystruct n::Int64 arr::Array{contained, 1} end 要使用contained*作为参数的函数进行ccall ,一切都可以正常处理contained*为Ptr{Int64} : con = fill(0, 5, 3); mys = ccall((:mk_mystruct, “mylib”), Ptr{mystruct}, […]