草庐IT

c++ - 用 SWIG 包装模板模板参数类

我有一个如下所示的C++类:templateclassContainerType,typenameMemberType>classMyClass{public:MyClass(ContainerType*volData);}我正在尝试用SWIG包装它。我的MyClass.i看起来像:%moduleMyClass%{#include"SimpleContainer.h"#include"MyClass.h"%}%include"SimpleContainer.h"%include"MyClass.h"%template(MyClass_SimpleContainer_Int)MyClas

c++ - 使用 Swig 将 std::set 转换为 ruby

我正在使用Swig在ruby​​中使用C++,目前我已经完成了文件david.h的简单示例#includeclassDavid{public:David(intx){this->x=x;}voidannounce(){printf("David%d\n",x);}intx;};还有一个像这样的swig文件%module"david"%{#include%}classDavid{public:David(intx);voidannounce();intx;};我的extconf.rb看起来像这样require'mkmf'system('swig-c++-rubylibdavid.i')o

c++ - 在 Eclipse 中调试混合的 Python/C++ 代码

我有一个带有SWIG生成的Python前端的C++项目,我使用CMake构建了该项目。我现在正试图找到一种方便的方法来调试我的混合Python/C++代码。我能够使用gdb获得错误的堆栈跟踪,但我想要一些更奇特的功能,例如单步执行代码和设置断点的能力,例如使用Eclipse。使用CMake的Eclipse生成器,我能够生成一个项目,我能够将其导入到Eclipse中。这工作正常,我也能够单步执行纯C++可执行文件。但随后问题开始了。首先,我无法从Eclipse内部构建Python前端。在命令行中,我只是执行“makepython”,但Eclipse项目中没有目标“python”。其次,一

c++ - 将结构更改为类(以及其他类型更改)和 ABI/代码生成

是well-establishedandacanonicalreferencequestion在C++中,在手动编写代码时,结构和类几乎可以互换。但是,如果我想链接到现有代码,如果我将一个结构体重新声明为一个类,我是否可以预期它会产生任何不同(即中断、鼻腔恶魔等),反之亦然,在生成原始代码后的header中?所以情况是类型被编译为结构(或类),然后我将头文件更改为其他声明,然后再将其包含在我的项目中。真实世界的用例是我使用SWIG自动生成代码,它根据给定的结构或类生成不同的输出;我需要将一个更改为另一个以使其输出正确的界面。例子是here(Irrlicht,SVertexManipul

c++ - SWIG:报告来自 C++ 代码的 Python 异常

我正在使用一个库,它在其API文档中指定定义一个从库的某个特定类继承的类。该库本身是用C++编写的,与Python的绑定(bind)是使用SWIG生成的。问题是,当我运行我的Python代码时,无论Python抛出什么异常,我都会收到错误消息“在抛出‘Swig::DirectorMethodException’实例后调用终止”。我希望在执行我的程序时报告由Python代码引发的异常。Esp,那些我得到ZeroDivisionError的情况。我尝试按照位于http://www.swig.org/Doc2.0/Python.html#Python_nn36的SWIG文档中描述的方法进行破

c# - 为 C# 使用 swig 时出现 TypeInitializationException

我正在为c#项目使用C++框架,并使用swig连接它们。问题是每次我尝试创建C++对象包装器时都会抛出TypeInitializationException。C#代码TRPointp=newTRPoint();其中TRPoint是C++结构typedefstruct{floatx,y;}TRPoint;详情:我有一个将C++代码构建到DLL文件中的vc项目,但我不知道如何正确链接它。 最佳答案 异常显示“无法加载DLL”-听起来您已经notbuilttheC++codeSWIG生成的,或者如果构建它可能会遇到路径问题。

c++ - 扩展 SWIG 内置类

SWIG的-builtin选项的优点是速度更快,并且不会出现多重继承的错误。挫折是我无法在生成的类或任何子类上设置任何属性:-我可以通过子类化来扩展像列表这样的python内置类型,没有麻烦:classThing(list):passThing.myattr='anything'#Noproblem-但是在SWIG内置类型上使用相同的方法,会发生以下情况:classThing(SWIGBuiltinClass):passThing.myattr='anything'AttributeError:typeobject'Thing'hasnoattribute'myattr'我该如何解决这

c# - 将代码添加到 SWIG 中自动生成的类

我正在尝试找到一种方法来将代码添加到swig生成的函数中。我已经使用类型映射来扩展类,但在文档中找不到任何关于扩展特定功能的内容。给定以下swig接口(interface)文件:%moduleTest%{#include"example.h"%}%typemap(cscode)Example%{bool64bit=SizeOf(typeof(System.IntPtr))==8;staticstringPath=64bit?"/...Pathto64bitdll.../":"/...Pathto32bitdll.../";%}%include"example.h"我得到以下C#代码:p

c++ - SWIG:向生成的 .py 文件添加注释

使用SWIG生成C++应用程序的Python接口(interface),有没有什么办法让它在生成的.py文件中注释函数?我实际上是将整个.h文件拉入.i文件,但举个小例子:%moduleexamplebooldo_something_interesting(intnumber,stringtext);swig-pythonexample.i生成:...defdo_something_interesting(*args):return_example.do_something_interesting(*args)do_something_interesting=_example.do_s

python - 将字符串返回到 SWIG python 接口(interface)的最佳方法是什么?

将字符串从C++返回到SWIGpython接口(interface)的线程安全且无内存泄漏的方法是什么?SWIG会自动将char*返回值的内容复制到python字符串中。ThisSWIGguide举个例子:char*__str__(){staticchartemp[256];/*WRITESTUFFTOSTRING*/return&temp[0];}他们的示例使用静态字符串作为返回值,但如果我的C++程序有多个线程,它们可以很容易地覆盖彼此的字符串。返回新分配的字符串会造成内存泄漏,因为SWIG不知道要释放它。我唯一能想到的是注册并返回一个指向实际python字符串对象的指针(这样py