【发布时间】:2012-01-21 19:04:02
【问题描述】:
我正在尝试用 Ruby-FFI 包装一个 C 库。但是,库中的函数名称以大写字母开头。结果,似乎 ffi 正在尝试生成常量,并且当您尝试在运行时从 Ruby 访问它们时,您会收到一条错误提示
NameError: uninitialized constant (name of function)
有没有办法给函数名取别名,以便在 ruby 中您可以将它们作为具有小写名称的方法来访问?
【问题讨论】:
我正在尝试用 Ruby-FFI 包装一个 C 库。但是,库中的函数名称以大写字母开头。结果,似乎 ffi 正在尝试生成常量,并且当您尝试在运行时从 Ruby 访问它们时,您会收到一条错误提示
NameError: uninitialized constant (name of function)
有没有办法给函数名取别名,以便在 ruby 中您可以将它们作为具有小写名称的方法来访问?
【问题讨论】:
等等,这里好像有一个例子:https://github.com/ffi/ffi/wiki/Windows-Examples
他们在这里做的事情如下:
attach_function :message_box, :MessageBoxW, [ :pointer, :buffer_in, :buffer_in, :int ], :int
因此,attach_function 似乎允许您将别名作为第一个参数传递,然后是通常的参数。试过了,好像行得通。
【讨论】: