【问题标题】:Anyone with experience on embedding CINT into a C++ app?任何有将 CINT 嵌入 C++ 应用程序的经验的人?
【发布时间】:2011-03-08 02:17:28
【问题描述】:

我说的是ROOT's CINT

我一直在用 C++ 开发一个游戏,它使用 Python 对 AI 进行编程。尽管我很喜欢 Python,而且它让 AI 编程变得多么容易(生成器和 FP 真的很性感),但它让非平凡的算法运行如此缓慢。

然后我记得我在某处读过有关 CINT 以及它如何可嵌入的信息。现在我需要你的帮助来决定是否将 CINT 实现为备用脚本系统。在 python 中,我使用 Boost::Python,这使得暴露类和对象几乎没有痛苦一旦你习惯了它。 CINT 有这么方便吗?

【问题讨论】:

    标签: c++ scripting root-framework


    【解决方案1】:

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


    解决 cmets 中的问题:

    • TObject 的派生可以是二手的:你的类可以从TObject 派生的东西派生,它只需要一个 TObject。
    • Root 提供了一个工具(makecint)和一些宏(ClassDefClassImp)来支持将您的代码与解释执行环境集成:编写从TObject 派生的类;在标头中包含ClassDef 宏,在源文件中包含ClassImp 宏;在代码上运行makecint 以生成所有繁琐的集成废话,然后将您的代码编译生成的代码到共享对象(或者,我认为,Windows 框上的 dll);启动解释器;使用.L 加载库;并且您的课程与解释环境完全集成(选项卡完成将起作用等等)。可以使用make(和可能的其他工具)自动构建构建。 ##Again,##我不知道这其中有多少属于ROOT,有多少属于cint。但它都是开源的,因此您可以根据需要获取和调整。

    【讨论】:

    • 我认为您可以创建一个从与您的公开对象和 TObject 相同的类派生的包装类。这将避免修改您现有的类。顺便说一句,你能详细说明一下吗?将它包含到您的构建系统中有多难?是否易于集成、链接?我很感兴趣:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    • 2010-09-28
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多