我说的是ROOT's CINT

我一直在用c++开发游戏,其中使用Python编写AI。尽管我很喜欢Python,并且它使AI编程变得如此容易(生成器和FP确实很性感),但它使非平凡的算法运行得如此缓慢。

然后我想起了我读过的一些有关CINT的内容,以及它是如何嵌入的。现在,我需要您的帮助来确定是否将CINT实现为备用脚本系统。使用python时,我使用Boost::Python,这使您几乎一劳永逸地公开类和对象。 CINT可以轻松吗?

谢谢。

最佳答案

我编写了针对Root编译的类,然后直接在解释器中访问它们。这很容易,尽管所有这些类都应从TObject派生。我不知道这是cint要求还是ROOT要求。您可能最好询问RootTalk CINT Support forum

要解决评论中的问题:

  • TObject派生的可以是二手的:您的类可以派生自TObject派生的东西,它只需要是一个TObject。
  • Root提供了一个工具(makecint)和一些宏(ClassDefClassImp)来支持将代码与解释后的执行环境集成在一起:编写从TObject派生的类;在 header 中包含ClassDef宏,并在源文件中包含ClassImp宏;在代码上运行makecint以生成所有乏味的集成nonesense,然后将您的代码和所生成的代码编译为共享对象(或者,我假设是Windows框上的dll);启动口译员;用.L加载库;并且您的类(class)与解释环境完全集成在一起(制表符补全将起作用)。可以使用make(以及可能的其他工具)自动进行构建。 ##再次,##我不知道其中有多少属于ROOT,有多少属于COT。但这都是开源的,因此您可以轻松调整所需的内容。
  • 关于c++ - 是否有将CINT嵌入C++应用程序的经验?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3114949/

    10-11 19:08