相关疑难解决方法(0)

如何使用SWIG将std :: vector <int>公开为Python列表?

我正在尝试使用SWIG将此函数公开给Python:

std::vector<int> get_match_stats();
Run Code Online (Sandbox Code Playgroud)

我希望SWIG为Python生成包装代码,以便将其视为整数列表.

将其添加到.i文件中:

%include "typemaps.i"
%include "std_vector.i"

namespace std
{
  %template(IntVector) vector<int>;
}

我正在跑步SWIG Version 1.3.36并打电话给-Wall我,我没有得到任何警告.

我能够访问列表但是在使用-Wall(g++ (GCC) 4.2.4生成)生成的C++代码进行编译时会收到一些警告:

  warning: dereferencing type-punned pointer will break strict-aliasing rules

我正确地公开了这个功能吗?如果是这样,警告意味着什么?


这些是相同功能中违规行之前的行:

SWIGINTERN PyObject *_wrap_IntVector_erase__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
  PyObject *resultobj = 0;
  std::vector *arg1 = (std::vector *) 0 ;
  std::vector::iterator arg2 ;
  std::vector::iterator result;
  void *argp1 = 0 ;
  int res1 = 0 ;
  swig::PySwigIterator *iter2 = 0 ;
  int res2 ; …

c++ python swig stl

16
推荐指数
1
解决办法
2万
查看次数

标签 统计

c++ ×1

python ×1

stl ×1

swig ×1