使用SWIG将Ruby嵌入到C ++应用程序中?

时间:2009-10-16 00:25:50

标签: c++ ruby swig

我以前使用SWIG成功创建了Ruby-C ++绑定,其中C ++代码被编译为动态库,并且Ruby脚本连接到它。

但是,我想反过来做。使用C ++创建可执行文件并使其能够加载和执行Ruby代码。 Ruby也应该能够调用在C ++端定义的函数(当然,我需要的只是'system()'调用。)

SWIG是否提供了实现此目的的手段?

2 个答案:

答案 0 :(得分:3)

您可能对Ruby embedded into c++

感兴趣

答案 1 :(得分:2)

SWIG解决了部分问题:它允许您创建与您编写的C ++函数的Ruby绑定。问题的另一半,制作一个可以评估Ruby代码的C ++程序,可以像你希望的那样简单或复杂。

简单的方法是将程序分成两半:一个存在于dll中的红宝石可访问部分,以及一个与该dll链接并通过system()调用Ruby的不可访问部分。

稍微高一点,您可以使用C ++中的ruby C API来运行Ruby代码。这使您可以更好地控制Ruby代码的执行方式,并为您提供机会来执行诸如将所有执行的Ruby包装在从Ruby异常生成C ++异常的块中。这里的缺点是你需要了解Ruby的C API,这不是很糟糕,但肯定不像Lua那样友好。

如果你想要的不止于此,那么你就会深入水域。 Ruby和C ++都是复杂的语言,让它们进行互操作是一个真正的挑战。 ÉricMalenfant的链接可能对您有所帮助。