如何使用SWIG公开公共内联c ++方法?

时间:2014-09-02 22:45:20

标签: c++ swig

我们说我有以下课程:

class bar
{
public:
    bar();
    void helloworld(int date) 
         { std::cout << "Hello world, the date is: " << date << std::endl; }
};

我需要在接口文件中做些什么来公开内联的helloworld()方法?我查看了%内联,但它似乎没有做我正在寻找的东西,这是一种可以调用的方法。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

你可以这样做:

/* bar_module.i */
%module bar_module
%{
#include "bar.h"
%}
%include "bar.h"
/* bar.h */
#include <iostream>
class bar
{
public:
    bar();
    void helloworld(int date) 
         { std::cout << "Hello world, the date is: " << date << std::endl; }
};
/* bar.cc */
#include "bar.h"
bar::bar() {}
# test.py
import bar_module
bar_module.bar().helloworld(47)
# Build commands
swig -o bar_module_wrap.cc -python -c++ bar_module.i
g++ -o bar_module_wrap.os -c -fPIC -I/usr/include/python2.7 bar_module_wrap.cc
g++ -o bar.os -c -fPIC -I/usr/include/python2.7 bar.cc
g++ -o _bar_module.so -shared bar_module_wrap.os bar.os

# Test command
python test.py
# Output
Hello world, the date is: 47