swig(Lua)对STL/C++ library的支持

来源:互联网 发布:旅行者1号 知乎 编辑:程序博客网 时间:2024/05/17 05:14

1、std::string

//demo.htd::string foo();void        bar(const std::string &x);
//demo.i%module demo%{#include "demo.h"%}%include "std_string.i"%include "demo.h"

调用

--test.luaa = demo.foo();demo.bar(a);

需要注意的是,std_string模块只支持std::string 和const std::string& ,其余的指针和非const的引用将最为SWIG指针处理
2、std::vector

//vectordemo.h#include <vector>double average(std::vector<int> v);
//vectordemo.i%module vecdemo%{#include "vectordemo.h"%include "std_vector.i"namespace std{    %template(DoubleVector) vector<<d>double>;}%include "vectordemo.h"%}
--test.luavint = vecdemo.DoubleVector(4);for i=1,4 do    vint:push_back(i*5);end;print(vecdemo.average(vint));

参考:1、http://www.swig.org/Doc3.0/SWIGDocumentation.html#Ruby_nn23_1
2、http://blog.csdn.net/u010640235/article/details/52074123

0 0