嵌入:mono vs lua

时间:2009-02-19 09:09:39

标签: c++ mono lua embedding mono-embedding

我有兴趣了解人们在C / C ++应用程序中嵌入单声道(.NET的开源实现)的经验。如何分发这样的应用程序以及依赖性是什么?我已经测试了OS X和mono作为一个巨大的框架(数百MB)。我的应用程序的用户都需要这个大框架,还是可以将其删除或将所有内容编译到主可执行文件中。

我之前有过在一个C ++应用程序中嵌入Lua的经验,这非常有效,因为我可以将整个lua解释器与我的主可执行文件静态链接。所以我没有外部依赖。是否有可能用单声道做类似的事情?

这里的任何Lua人都能评论他们如何找到与Lua相比的单声道?

PS:嵌入我指的是一个C ++应用程序,它初始化单声道环境并加载.NET程序集并执行它,然后允许在程序集中的C#代码和主可执行文件中的C ++方法之间进行通信。

2 个答案:

答案 0 :(得分:6)

您可能还应该查看Mono的Small Footprint页面,该页面描述了如何嵌入较小的运行时。哎呀,他们自己用Moonlight来做。

我希望有所帮助。

答案 1 :(得分:2)

这是2岁的问题。所以现在情况可能会有所不同。

对我来说,最重要的一点是GC。我将Lua嵌入到交互式应用程序和游戏中,因为需要增量GC。目前Lua 5.1具有精确的增量GC,但我无法在Mono上找到任何增量或精确GC的证据。因此内存将泄漏(即使它非常小!),应用程序将间歇性地挣扎。

人们说GC暂停可以通过调整一些参数和汇集对象来解决,但正如我所经历的那样,永远不会在没有任何分布GC负载的情况下解决 GC中的方法。分代GC是分布算法之一,但它太粗糙,几乎没有帮助。

因为您无法通过汇集不属于您的代码中使用的对象来控制生命周期模式或重用实例。 (如基础类库)

所以我不建议使用C#平台(Mono或.NET,至少还有)用于交互式/(软)实时应用程序。


修改

我不知道在Mono或.NET上是否提供了任何增量/并发接近的GC。如果你能确定他们提供那种GC,当然,使用它很好:)