草庐IT

SWIG_NewPointerObj

全部标签

python - SWIG/python 数组内部结构

我在header.h中定义了一个结构,如下所示:typedefstruct{....inticntl[40];doublecntl[15];int*irn,*jcn;....当我用这种结构初始化一个对象时,我可以访问整数/double但不能访问数组。>>st.icntl>>st.icntl[0]Traceback(mostrecentcalllast):File"test_mumps.py",line19,inprints.icntl[0]TypeError:'SwigPyObject'objectisnotsubscriptable如何访问读/写中的值?

python - Swig 致命 Python 错误 : PyThreadState_Get: no current thread Abort trap: 6 with Python 2. 7.5

在升级Python之前,我使用的是Python2.7.2,将生成的动态库my_lib导入python文件时,Swig没有问题。现在使用Python2.7.5我可以使用Swig生成动态库my_lib但是当我在python文件中导入这个库时我收到:致命的Python错误:PyThreadState_Get:没有当前线程中止陷阱:6有了那个崩溃报告:线程0崩溃::调度队列:com.apple.main-thread0____libsystem_kernel.dylib________0x00007fff897c2212__pthread_kill+101_____libsystem_c.dy

python - 如何查看 SWIG 接口(interface)、TensorFlow 背后的 C++ 函数调用

我正在研究TensorFlow,我想知道每个Python函数与SWIG接口(interface)背后对应的C++函数之间的关系。换句话说,我希望能够准确了解我的TensorFlow应用程序的每一行Python代码调用了哪些C++函数。我已经看到如何调试Python代码here以及如何显示发生段错误的代码行here,但是通过这些方式我只能看到错误的位置,而我希望能够知道每个C++函数调用,即使代码中没有错误(目前我正在使用gdb进行调试能够看到系统调用和动态库调用,但看不到C++函数调用)。 最佳答案 大多数人编写的大部分代码都是用于

python - 使用 swig 绑定(bind)谷歌 Protocol Buffer

我正在编写需要处理大量小而复杂的protobuf编码消息的python程序。我尝试使用纯python写的protocolbuffers的Python实现,但是性能实在是太差了。所以我正在研究一个显然somefolksgottowork的解决方案-使用protoc生成C++文件,然后使用swig用python包装它们。问题是我无法进入工作的Python模块。使用-includeall运行swig时,确保生成的所有使用的Google基类/实用程序类消息类也被包装-swig失败,提示缺少系统包含文件(例如“string”)。我无法使用-I标志或复制整个包含目录来解决这个问题。环境为Ubunt

python - 如何使用 Python 列表使用 SWIG 在 C++ 中分配 std::vector?

我有一个简单的C++类,其中包含一个std::vector成员和一个将std::vector作为参数的成员函数,我用SWIG包装并从Python调用。示例代码如下。编译后,我进入Python并执行:importtestt=test.Test()a=[1,2,3]b=t.times2(a)#worksfinet.data=a#fails!我得到的错误信息是:TypeError:inmethod'Test_data_set',argument2oftype'std::vector>*'我知道我可以做到:t.data=test.VectorDouble([1,2,3])但我想知道如何在作业中

c++ - 通过 SWIG 在 python 中使用 std::ifstream、std::ofstream 的技术?

有没有办法通过swig在python中使用std::[io]fstream?我有一个c类,其功能如下:voidreadFrom(std::istream&istr);voidwriteTo(std::ostream&ostr);我想在python中构造一个std::ofstream实例并将其作为writeTo的参数(并为阅读做同样的事情)。我试过做一个类似的函数std::ostream&make_ostream(conststd::string&file_name){returnstd::ofstream(file_name.c_str());}在swig.i文件中,这样这个函数就会成

python - 如何使用 SWIG 生成跨平台界面?

我正在用SWIG(以Python为目标)包装一个库。库函数包含数据类型为“uint32_t”、“uint8_t”等的参数。我想创建尽可能跨平台的接口(interface),所以我想在我的interface.i文件。例如:uint32_tfunc(uint32_ta,uint32_tb);我要解决的问题是SWIG不会将参数识别为整数,除非uint32_t数据类型上有typedef。现在我在接口(interface)文件上使用它:typedefunsigneduint32_t;删除typedef行将导致无法从目标Python绑定(bind)调用该函数:>>>mylib.func(2,2)T

python - 使用 Swig 将 C-enum 包装在 Python 模块中

我在myenum.h中有一个简单的C语言枚举:enumMyEnum{ONE,TWO,THREE};问题是,当我将其映射到Python时,我只能通过模块名称访问枚举,而不能通过MyEnum。因此值ONE、TWO、THREE包含在我定义的任何其他函数中,而不是包含在MyEnum中。我的api.i文件是:%moduleapi%{#include"myenum.h"%}%include"myenum.h"我用SWIG生成swig-builtin-pythonapi.i并将其导入Pythonimport_api现在我必须使用_api模块中的枚举值:_api.ONE_api.TWO_api.THR

python - 使用 SWIG 生成 Python 类型提示

python3.5+支持类型提示这一事实在生成包装器时有很好的用例,例如通过SWIG。在使用大型C++API时提供类型提示会大大改善体验,因为您的IDE/linter可以执行编译时类型检查。如何使用SWIG生成类型提示? 最佳答案 swigautodoc功能,至少在简单情况下可以为您提供此功能。将%feature("autodoc","1")添加到您的SWIG接口(interface)代码中,将生成如下内容:deffunction_name(*args,**kwargs):"""function_name(intx,inty,Foo

c++ - 带回调的 SWIG C++ 绑定(bind)

我正在为一些C++代码编写一些SWIG/Python绑定(bind)。这是所谓的Kinect意外API,我有电机和LED功能working.似乎没有从SWIG调用对解析和填充RGB和深度缓冲区的Listener类的回调。数据捕获线程显然启动并开始占用CPU,但没有来自回调的调试行通过。填充数据缓冲区并从python轻松访问它们的更好方法是什么?classKinectListener{public:virtual~KinectListener(){};virtualvoidKinectDisconnected(Kinect*K){};virtualvoidDepthReceived(Ki