我多次听说可以集成 C 和 Python/Ruby 代码。
现在,我的问题是,我可以在 C 中使用例如 Python/Ruby ORM 吗?
是的,但是 API 不太可能非常好,特别是因为 ORM 的目的是返回对象而 C 没有对象,因此难以访问漂亮的 OOP API。
即使在 C++ 中也是有问题的,因为对象将是 Python/Ruby 对象和值 Python/Ruby 对象/值,并且您需要来回转换。
最好使用专门为 C 制作的漂亮的数据库层。
对于 Ruby,是的,您可以使用 Ruby C API。包含后ruby.h
,您可以使用rb_funcall
:
要直接调用方法,可以使用下面的函数
VALUE rb_funcall(VALUE recv, ID mid, int argc, ...)
此函数调用 上的方法
recv
,方法名称由符号 指定mid
。
这将允许您调用任何Ruby 方法,从而使用来自 C 的任何 Ruby 代码。不过,它不会很漂亮。SO 的 Ruby C API 标签 wiki中有很多很好的资源。