Я пытаюсь использовать функции C в Julia со структурами в качестве аргументов, я вызываю функции, но что-то идет не так.Простым примером является следующий:
In C:
typedef struct {
int width;
int height;
int stride;
float* elements;
} Matriz;
- это простая структура, в которой хранится матрица с width
, heigth
, stride
и elements
поля
float GetElm(const Matriz A, int row, int col)
{
return (row < A.height && col < A.width ?
A.elements[row * A.stride + col] : 0);
}
- это функция, которая возвращает элемент матрицы с учетом строки и столбца.
в Julia:
immutable Matriz
width::Cint
height::Cint
stride::Cint
elements::Array{Float32,1}
end
M=Matriz(5,5,5,Array{Float32,1}(collect(0:24))) #creating a Matrix of 5x5
ccall((:GetElm,"path/to/dll"),Float32,(Matriz,Cint,Cint),M,0,1)
* ccall
должен возвращать 1.0
в соответствии с кодом, но возвращает другое значение, я что-то не так делаю?