草庐IT

SWIG_NewPointerObj

全部标签

c++ - SWIG 为 Python 包装 C++ : translating a list of strings to an STL vector of STL strings

我想用SWIG包装一个C++函数,它接受一个STL字符串vector作为输入参数:#include#include#includeusingnamespacestd;voidprint_function(vectorstrs){for(unsignedinti=0;i我想将其包装到一个名为“mymod”的模块中可用的Python函数中:/*mymod.i*/%modulemymod%include"typemaps.i"%include"std_string.i"%include"std_vector.i"%{#include"mymod.hpp"%}%include"mymod.hp

c++ - SWIG 如何在 Python 中包装 map<string,string>?

我正在使用SWIG2.0为C++库创建Python包装器。一种方法有一个类型为“conststd::map&”的参数。SWIG很乐意为它生成一个包装器,但我不知道如何调用该方法。例如,如果我为该参数传递{"a":"b"},我会收到“NotImplementedError:重载函数的参数数量或类型错误”错误。我查看了生成的.cxx文件,希望它能说明问题,但事实并非如此。下面是处理该参数的代码:res4=SWIG_ConvertPtr(obj3,&argp4,SWIGTYPE_p_std__mapT_std__string_std__string_t,0|0);if(!SWIG_IsOK(

使用 swig 和 Anaconda Python 找不到 Python.h

我正在尝试按照本教程编译一个简单的python/C示例:http://www.swig.org/tutorial.html我在MacOS上使用Anacondapython。然而,当我运行时gcc-cexample.cexample_wrap.c-I/Users/myuser/anaconda/include/我得到:example_wrap.c:130:11:fatalerror:'Python.h'filenotfound#include^貌似这个问题在很多问题中都有反射(reflect):MissingPython.hwhiletryingtocompileaCextensionm

c++ - SWIG C++ 到 Python : Warning(362): operator= ignored

我正在将C++类导出到Python,我注意到在编译期间,SWIG发出了以下警告:Warning(362):operator=ignored我不确定为什么运算符会重载,因为它在SWIGdocumentation中说,SWIG能够处理赋值运算符等运算符我的类没有什么特别之处,它是这样声明的:classFoo{public:Foo();Foo&operator=(constFoo&);//etc..};为什么SWIG无法为赋值运算符生成包装代码,我该如何解决这个问题? 最佳答案 python中没有赋值(原始类型除外),只有指针赋值。如果你

c++ - 如何使用 SWIG 枚举枚举成员

我能否将C++enum作为真实实体而不是一组常量公开给SWIG,以便我可以在python代码中枚举它们? 最佳答案 我遇到了同样的问题。我希望SWIG很快支持C++11的enumclass。这是一个说服SWIG将枚举放入结构中的hack:#ifdefSWIG%rename(MyEnum)MyEnumNS;#endifstructMyEnumNS{enumValue{Value1,Value2,Value3};};typedefMyEnumNS::ValueMyEnum;在.cpp代码中,您现在必须使用MyEnum::Value1,而

python - 用数组成员包装 C 结构以便在 python : SWIG? cython 中访问?类型?

我想从python访问一个C函数,该函数返回一个包含double组的结构(其中这些数组的长度由结构的其他int成员给出)。声明是typedefstruct{intdim;intvertices;intquadrature_degree;intpolynomial_degree;intngi;intquadrature_familiy;double*weight;/*1D:ngi*/double*l;/*2D:ngi*dim*/double*n;/*2D:ngi*vertices*/double*dn;/*3D:ngi*vertices*dim*/}element;externvoidg

python - 检测到 Swig/Python 内存泄漏

我有一个非常复杂的类,我正尝试在SWIG中为其制作Python包装器。但是,当我在Python中创建该项目的实例时,我无法在未收到消息的情况下初始化某些数据成员:>>>myVar=myModule.myDataType()swig/pythondetectedamemoryleakoftype'MyDataType*',nodestructorfound.有人知道我需要做什么来解决这个问题吗?有没有我可以用来生成析构函数的标志? 最佳答案 SWIG始终生成析构函数包装器(除非使用%nodefaultdtor指令)。但是,如果它对类型

python - 如何让我的 SWIG 扩展模块与 Pickle 一起工作?

我有一个Python扩展模块,它使用SWIG作为包装器,我尝试用Pickle序列化它,但我失败了=)如果有人有可以pickle的SWIG扩展源,我很乐意看到它!看来我应该实现__reduce_ex__我的C++代码中的方法。有没有人有__reduce_ex__的例子?ThereissimilarStackoverflowquestion但它省略了manager_constructor规范和实现。 最佳答案 似乎我找到了适合我的简单解决方案:假设我们有类C是用SWIG生成的,然后我们用包装它classPickalableC(C,Pic

html - VS Code,使用 Twig 或 Swig 标签格式化 HTML 代码

当我们使用Twig或Swig标签时,有没有办法在VSCode中正确格式化HTML,比如{%if...%}{%else%}{%endif%}{%for%}{%endfor%}{%include%},etc...目前,代码格式化程序删除了这些标签前后的所有换行符。无法为此找到合适的扩展。既不是配置内部代码格式化程序的方法。 最佳答案 我有同样的问题并解决了安装这个扩展:TwigLanguage安装它,重新启动编辑器,如果你在Windows上,你可以使用标准ALT+SHIFT+F进行格式化。希望对您有所帮助。

c# - 将 SWIG 与 C# 结合使用时的最佳实践是什么?

有人用过SWIG吗?用C#库?如果有,您发现了哪些陷阱以及使用该库的最佳方式是什么?我正在考虑将它用作用C编写的程序的包装器,我想包装头文件,以便在我的.NET应用程序中使用它们。编辑:对目标操作系统的一些说明。我计划在Linux和Windows上运行该应用程序,因此我正在研究SWIG。P/Invoke不是一个选项。 最佳答案 对于我的上一个项目,这是完整的C#SWIG配置文件:%modulemdProject%{#include"mdProject.h"%}我用SWIG编译它:swig-csharp-c++-I../../Incl