Python中文
首页
教程
问答
标签
搜索
登录
注册
如何使用SWIG将std::vector<int>公开为Python列表?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图使用SWIG将此函数公开给Python:</p> <pre><code>std::vector<int> get_match_stats(); </code></pre> <p>我希望SWIG为Python生成包装代码,这样我就可以把它看作一个整数列表。</p> <p>将此添加到.i文件:</p> <pre> %include "typemaps.i" %include "std_vector.i" namespace std { %template(IntVector) vector<int>; } </pre> <p>我正在运行<code>SWIG Version 1.3.36</code>,并用<code>-Wall</code>调用swig,没有收到任何警告。</p> <>我能够访问一个列表,但是当用{{CD2>}(用{{CD4}})编译生成的C++代码时,我得到了一系列警告: <pre> warning: dereferencing type-punned pointer will break strict-aliasing rules </pre> <p>我是否正确地公开了函数?如果是,警告意味着什么?</p> <hr/> <p>以下是同一函数中违规行之前的行:</p> <pre> 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 ; PyObject * obj0 = 0 ; PyObject * obj1 = 0 ; if (!PyArg_ParseTuple(args,(char *)"OO:IntVector_erase",&obj0,&obj1)) SWIG_fail; res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntVector_erase" "', argument " "1"" of type '" "std::vector *""'"); } arg1 = reinterpret_cast * >(argp1); </pre> <p>这是冒犯的一句话:</p> <pre> res2 = SWIG_ConvertPtr(obj1, SWIG_as_voidptrptr(&iter2), swig::PySwigIterator::descriptor(), 0); </pre> <p>接下来是更多的代码。</p> <p>使用g++4.2.4编译时生成的警告是:</p> <pre> swig_iss_wrap.cxx: In function ‘PyObject* _wrap_IntVector_erase__SWIG_0(PyObject*, PyObject*)’: swig_iss_wrap.cxx:5885: warning: dereferencing type-punned pointer will break strict-aliasing rules </pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
我对SWIG没有太多的经验,但是你是否在你的.i文件中包含C++头文件?试试其中一个(或两个)</p> <pre><code>%include "myvector.h" %{ # include "myvector.h" %} </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
我是否正确构建了这个递归神经网络
6 回答
我是否正确理解acquire和realease是如何在python库“线程化”中工作的
6 回答
我是否正确理解Keras中的批次大小?
1 回答
我是否正确理解PyTorch的加法和乘法?
6 回答
我是否正确组织了我的Django应用程序?
2 回答
我是否正确计算执行时间?如果是这样,那么并行处理将花费更长的时间。这看起来很奇怪
2 回答
我是否每次创建新项目时都必须在PyCharm中安装numpy?(安装而不是导入)
4 回答
我是否每次运行jupyter笔记本时都必须重新启动内核?
4 回答
我是否用python安装了socks模块?
2 回答
我是否真的需要知道超过一种语言,如果我想要制作网页应用程序?
3 回答
我是否缺少spaCy柠檬化中的预处理功能?
5 回答
我是否缺少给定状态下操作的检查?
3 回答
我是否能够使用函数“count()”来查找密码中大写字母的数量((Python)
2 回答
我是否能够使用用户输入作为colorama模块中的颜色?
6 回答
我是否能够创建一个能够添加新Django.contrib.auth公司没有登录到管理面板的用户?
8 回答
我是否能够将来自多个不同网站的数据合并到一个csv文件中?
6 回答
我是否能够将目录路径转换为可以输入python hdf5数据表的内容?
6 回答
我是否能够等到一个对象被销毁,直到它创建另一个对象,然后在循环中运行time.sleep()
1 回答
我是否能够通过CBV创建用户实例,而不是首先创建表单?(Django)
10 回答
我是否要使它成为递归函数?
9 回答