在Rubymotion中使用FFI(宝石)或类似物

时间:2015-07-20 20:55:23

标签: rubygems rubymotion

我有一个外部C-Library我想用于我的Rubymotion(Redpotion)项目。 我已经将这个库用于Ruby项目并使用了gem FFI,它运行得很好。

然而,我不能让这个宝石在Rubymotion中工作(因为它不是Rubymotion宝石)。 我收到了这个错误。

uninitialized constant Libdedx::FFI (NameError)

宝石包含在Gemfile中,代码位于

之下
module test
    class Dedx_workspace < FFI::Struct
        layout  :loaded_data, :pointer,
                :datasets, :int,
                :active_datasets, :int
    end
end

有人知道这是否可行或知道使用外部C库的其他方法吗?

1 个答案:

答案 0 :(得分:0)

您将无法使用FFI。但是,还有另一种使用C库的好方法。

将C函数包装在Objective-C类中并静态链接。

@interface MyWrapper : NSObject
- (void)someMethod;
@end


@implementation MyWrapper

- (void) someMethod
{
    // C stuff here
}

@end

在你的Rakefile中

app.vendor_project('vendor/MyWrapper', :static)