有没有办法将Ruby FFI指向头文件而不是编写attach_function调用?头文件基本上具有相同的确切信息。
temp_convert.rb:
attach_function :temp_convert, [:float], :float
temp_convert.h:
float temp_convert(float temp);
答案 0 :(得分:4)
因为C头文件是用C语言编写的,但Ruby解释器只能解释Ruby。此外,头文件甚至可能在运行时不可用。
已经谈论从标头自动生成attach_function
次调用。但是,正如我在上面暗示的那样,这基本上意味着你必须实现一个完整的C编译器(确切地说,完整的前半部分,确切地说)。目前,Ruby实现者更专注于使Ruby以与C一样快的速度运行,以减少使用FFI的需要,而不是编写自己的C编译器(即使您只需要执行此操作,这也是一件非常重要的事情) lexing,解析,语义分析和输入部分,而不是实际的代码生成或优化)。
答案 1 :(得分:2)
正如Jörg所说,实现头扫描程序意味着实现相当多的C编译器,以使一切正常。
您可能想要尝试缓解疼痛的一件事是FFI Swig Generator。它使用swig生成FFI接口。它仍然意味着你需要做一些工作,这可以归结为一个cut'n'paste工作,为简单的接口生成swig输入文件。