【问题标题】:Ruby-FFI producing constants when wrapping functions starting with capital letter?Ruby-FFI 在包装以大写字母开头的函数时产生常量?
【发布时间】:2012-01-21 19:04:02
【问题描述】:

我正在尝试用 Ruby-FFI 包装一个 C 库。但是,库中的函数名称以大写字母开头。结果,似乎 ffi 正在尝试生成常量,并且当您尝试在运行时从 Ruby 访问它们时,您会收到一条错误提示

NameError: uninitialized constant (name of function)

有没有办法给函数名取别名,以便在 ruby​​ 中您可以将它们作为具有小写名称的方法来访问?

【问题讨论】:

    标签: c ruby ffi


    【解决方案1】:

    等等,这里好像有一个例子:https://github.com/ffi/ffi/wiki/Windows-Examples

    他们在这里做的事情如下:

    attach_function :message_box, :MessageBoxW, [ :pointer, :buffer_in, :buffer_in, :int ], :int
    

    因此,attach_function 似乎允许您将别名作为第一个参数传递,然后是通常的参数。试过了,好像行得通。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2015-07-18
      相关资源
      最近更新 更多