用Ruby的FFI封装C函数

Wrapping a C function with FFI for Ruby

本文关键字:函数 封装 FFI Ruby      更新时间:2023-10-16

我确实很难理解C和C++,但我试图用FFI包装C++函数(外部为"C"),但不太理解语法。

外部C代码的形式是:

Client *create_client(Address *address, const char * const foo){
//make stuff  
}

具体来说,我的问题是,如何使用FFI在Ruby中封装它?我认为构造函数有两个指针,所以它的形式是:

attach_function :create_client, [:pointer, :pointer], :pointer

但是,另一方面,const char*const foo让我很困惑——它应该被视为这样的字符串吗:

attach_function :create_client, [:pointer, :string], :pointer

谢谢。

attach_function :create_client, [:pointer, :string], :pointer

const char *意味着它是一个c字符串,后面的const部分只与您调用的函数有关。请参阅此了解更多详细信息。你包装的函数在我看来是正确的,但我认为你需要的不仅仅是这个函数,它会更复杂。

外国金融机构维基在这里有一些好的信息。