c - Ruby-FFI 在包装以大写字母开头的函数时生成常量?

标签 c ruby ffi

我正在尝试使用 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 似乎允许您将别名作为第一个参数传递,然后是常用参数。尝试了一下,似乎有效。

关于c - Ruby-FFI 在包装以大写字母开头的函数时生成常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8955805/

相关文章:

Ruby 在转换后的 JSON 哈希数组中按名称查找键

javascript - 在 Ruby on Rails 中的 Javascript 中设置 session

ruby-on-rails - 如何在 Rails 3.2 中使用 React 生态系统?

erlang - 使用 NIF 时如何正确进行垃圾收集

c - 为什么在 arm-none-eabi GCC 上将 `uint32_t` 类型定义为 `unsigned long`,以及如何更改它?

java - JNA:结构的 char 数组成员的计算大小令人惊讶

c++ - float 倍数和除法精度问题

c# - 如何创建 nim dll 并从 C# 调用它

java - Hello hello prolog 和 weka 集成

c - 仅当使用 -std=c99 时,我才会收到隐式声明错误