【问题标题】:How to Expose Boost::shared_ptr<T> to Tcl + SWIG interface file?如何将 Boost::shared_ptr<T> 公开给 Tcl + SWIG 接口文件?
【发布时间】:2013-05-13 07:40:47
【问题描述】:

我想使用 SWIG 将 boost::shared_Ptr 暴露给 Tcl 层。但目前我不知道我可以公开这个。我发现 SWIG/Lib 文件夹包含shared_ptr.i 的接口文件。但是在内容中我发现不能直接使用。它必须包含在“boost_shared_ptr.i”之后。但是“SWIG/Lib/tcl”文件夹中没有像boost_shared_ptr.i 这样的东西,但我们有类似的界面,我可以将其包含在 Java 中。

【问题讨论】:

  • 希望我能提供帮助,但我从未以实质性方式完成 C++/Tcl 绑定,当然也没有使用 SWIG 完成。 (我知道一些关于如何绑定基本类型的知识,但是shared_ptr?完全不知道。我更多地使用普通的旧 C…)
  • 你不是想将 T 作为参数暴露给 Tcl,是吗?
  • 我实际上想在 tcl 中为 boost::shared_ptr 创建句柄。

标签: c++ tcl swig


【解决方案1】:

当我上次尝试时,在所有 SWIG 中都没有对 boost/shared_ptr 的良好支持。 Python 的覆盖率最高。我很想知道这是否发生了变化。

就我对 SWIG 的其他经验而言,您还需要使用 %template 为您要公开的每种类型实例化模板。

【讨论】:

    【解决方案2】:

    你不能使用标准的 shared_ptr 吗?我的意思是 std::tr1::shared_ptr?在 gcc 中,您需要

    #include <tr1/memory>
    

    【讨论】:

    • 我不能使用 std::tr1::shared_ptr,因为我的库将同时用于 Java 和 TCL,而且我已经在 J​​ava 上公开了所有内容,而且它似乎在那里工作正常。
    • 更重要的是微软在 C++0x 兼容性方面失败了。它适用于WIN XP SP2或更高版本,因此如果您制作的项目将有很多用户,您还不能使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    相关资源
    最近更新 更多