【问题标题】:Interfacing C++ code with perl using SWIG使用 SWIG 将 C++ 代码与 perl 接口
【发布时间】:2015-12-22 06:01:36
【问题描述】:

我有一组使用 Boost 和 STL 库的 c++ 类,目前正在 Linux 中使用这些类生成可执行文件。我想使用 SWIG 为这个 c++ 代码创建一个 perl 接口。

假设我有 10 个类 1..10,如果我想使用 SWIG 使用 perl 创建一个类 1 的接口,并且 main() 函数在类 5 中

我的接口文件(*.i) 应该是什么样子? 我应该以什么格式构建我的 C++ 代码?

【问题讨论】:

    标签: c++ perl swig


    【解决方案1】:

    您无需包装 main() 即可为 Class1 创建接口。如果只想在 perl 中拥有那个特定的类,那么你应该写

    %module <your_module_name>
    
    %{
    #include "class1.h"
    %}
    
    %include "class1.h"
    

    SWIG 将扫描class1.h 并为其将遇到的每个类和函数创建相应的包装器。您可以使用%ignore 来防止某些符号被包装。如果 Class1 的头部还有其他类型,比如 Class2 和 Class3,类似

    class Class1 {
      Class2 foo();
      Class3 bar();
    };
    

    SWIG 将发出错误,因为它不知道如何包装这些类型。您要么也需要包装它们,要么如果您不想公开其他类,您可以编写

    %import "class2.h"
    %import "class3.h"
    

    这会将必要的类型信息告知 SWIG,但不会创建包装器。

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多