我有一些(有些过高)的数量:
extern TCODLIB_API const TCOD_color_t TCOD_red;
extern TCODLIB_API const TCOD_color_t TCOD_flame;
extern TCODLIB_API const TCOD_color_t TCOD_orange;
extern TCODLIB_API const TCOD_color_t TCOD_amber;
extern TCODLIB_API const TCOD_color_t TCOD_yellow;
extern TCODLIB_API const TCOD_color_t TCOD_lime;
如何很好地了解Ruby方面的值?感觉应该有一个与attach_function等效的attach_const,如下所示:
module TCOD
extend FFI::Library
ffi_lib File.join(APP_ROOT, "libtcod-1.5.1/libtcod.so")
attach_function :color_RGB, 'TCOD_color_RGB', [:uchar, :uchar, :uchar], Color.val
end
如果可能的话,我宁愿不必重新定义从lightest_sepia到desaturated_chartreuse的所有内容......
答案 0 :(得分:3)
有,attach_variable
是您正在寻找的。 p>
这适用于任何实际上是全局变量的东西(看起来像你的情况)但是如果常量只是#define宏则不行。
引用FFI::Library
documentation示例:
module Bar
extend FFI::Library
ffi_lib 'my_lib'
attach_variable :c_myvar, :myvar, :long
end
# now callable via Bar.c_myvar
和
module Bar
extend FFI::Library
ffi_lib 'my_lib'
attach_variable :myvar, :long
end
# now callable via Bar.myvar