【发布时间】:2014-03-25 17:45:45
【问题描述】:
我试图从 Ruby 调用的 C 函数是这样的:
void foo(double *in_array, double *out_array)
地点:
-
in_array是一个数组数组,“foo”将使用它来 计算并返回: -
out_array也是一个数组数组,C 函数会改变它的内容。
我的包装看起来像这样:
module FooLib
extend FFI::Library
ffi_lib "foo.so"
attach_function :Foo, [:pointer, :pointer], :void
end
我正在 Ruby 中执行以下操作:
# Allocate the objects and prepare them
in_array = Matrix.build(10, 3) { rand }.to_a
out_array = Matrix.build(10, 3) { 0 }.to_a
FooLib.Foo(in_array, out_array)
但我收到以下错误:
:pointer argument is not a valid pointer (ArgumentError)
我可以理解我需要使用指向这些数组的指针而不是数组对象,但我不知道该怎么做。这是否意味着我需要使用 LibC 包装器在 C 中创建这些结构?
【问题讨论】: