草庐IT

swig-template

全部标签

php - 使用 SWIG 在 PHP 中包装 boost::shared_ptr

如果我使用SWIG包装这个C++函数:boost::shared_ptrClient::create(){returnboost::shared_ptr(newClient());}然后在PHP中调用它:$client=Client::create();echogettype($client);$client的类型是resource,不是object,所以我不能调用Client方法。包装此功能的选项有哪些?我正在为其他人的C++库创建一个PHP包装器,因此重新编写代码以不使用boost::shared_ptr并不是一个真正的选择。这是迄今为止我想出的唯一解决方案:MyClientCli

php - 银条 3.3 : how to translate date month variable in a template?

在我的页面上我有一个日期变量。我希望按语言环境(在我的例子中是立陶宛语)翻译它的缩写月份名称。我已经在langed/lang/lt_LT.yml中设置了翻译:Month:Jan:'Sau'Feb:'Vas'Mar:'Kov'Apr:'Bal'...当我放置时在我的模板中$Date.Format(Md)无论语言环境如何,它始终以英文给出月份和日期(例如“Apr18”,在这种情况下我需要“Bal18”)。我曾尝试将Month变量放入.ss模板的翻译引号中:但它不起作用。它抛出一个错误:“[用户错误]未捕获SSTemplateParseException:第16行模板中的解析错误。错误是:格

Java/C++ SWIG - 使用数组参数调用函数

所以我的代码看起来像这样:booldoSomething(unsignedintx,constmyStruct1typeOne[2],myStruct2typeTwo[2]);使用swig我得到java代码:publicstaticbooleandoSomething(longx,myStruct1typeOne,myStruct2type2){}我想要的是:publicstaticbooleandoSomething(longx,myStruct1[]typeOne,myStruct2[]type2){}我知道问题在于SWIG无法知道我在Java中的数组将只有2个元素,因为java声

c++ - 等同于 "typename",表示从属名称确实是 'template template parameter'

我们将无法找到正确语法的部分代码缩减为最小示例。让我们假设以下定义(不用担心“为什么”;)templateclassElement{};templateclass>classClient{};templatestructTemplatedProvider{templateusingelement_template=Element;};现在,从C++11开始,我们可以使用类模板或类型别名模板来实例化Client模板。以下函数编译得很好:voidfun(){Clientclient;Client::element_template>clientBis;}但在以下情况下,当给Client的模

c++ - SWIG - 命名空间问题

我无法让以下简单示例与SWIG1.3.40一起使用(我也尝试过1.3.31)。只要我不将Foo结构包装在命名空间中,Foo结构就会作为Python模块出现,但一旦我这样做,我就会在生成的test_wrap.c中遇到编译错误。测试.h:#ifndef__TEST_H__#define__TEST_H__#defineUSE_NS1#ifUSE_NSnamespacens{#endifstructFoo{floata;floatb;floatfunc();};#ifUSE_NS}#endif#endif测试.cpp#include"test.h"#ifUSE_NSnamespacens{#

c++ - 模板特化 : does not match any template declaration

我在学习模板特化的时候,用了一个很简单的例子,但是还是报错。#includetemplateclasschrrr{public:Tchgchr(Tc);};templateTchrrr::chgchr(Tc){returnc+1;}templateclasschrrr{public:charchgchr(charc);};templatecharchrrr::chgchr(charc){returnc+2;}usingnamespacestd;intmain(){chara='a';inti=1;chrrrit;chrrrch;cout错误说:line20:error:template

c++ - SWIG 无法识别字符串参数

我有一个令人沮丧的问题,让我花了很多时间来处理它,但我没有找到任何解决方案。我想在带有SWIG的PHP中使用C++类。我生成了我的共享对象,它对某些方法工作正常,但每当我使用字符串参数作为输入调用这些方法时,我都会遇到此错误:Fatalerror:Typeerrorinargument2ofPKI_Buf_initHex.ExpectedSWIGTYPE_p_std__stringPKI_Buf_initHex是SWIG自动生成的包装器类的名称。在我的C++代码中,我将initHex方法声明为:intinitHex(conststringx){..}我在我的接口(interface)文

python - 使用 python 包装的 c++ SWIG 模拟输入

我是swig和python单元测试的新手。这就是我想要做的。我有一个需要用户输入的C++函数。使用SWIG将C++代码包装到Python代码中。我正在尝试使用pythonsunittest模块来模拟输入。我试过模拟builtins.input并用c++编写我自己的基本函数,它只返回一个字符串并模拟它。当我到达c++代码中的std::cin时,模拟builtins.input仍然挂起。并模拟返回字符串的函数,不返回模拟的return_value。我的猜测是出于某种原因我无法模拟函数的返回值,因为它是真正的c++代码而不是真正的python。这是我正在使用的一些示例代码:c++我可以包含需

c++ - 来自 Python 的 SWIG C++ 类型的数组分配

我正在为一个使用SWIG公开其C++API的程序编写Python脚本。SWIG公开函数具有如下接口(interface):voidwritePixelsRect(JoxColor*colors,intleft,inttop,intwidth,intheight);JoxColor是一个POD结构,如下所示:structJoxColor{floatr,g,b,a;};我可以轻松地在Python中创建一个JoxColor并像这样调用writePixelsRect:c=JoxApi.JoxColor()c.r=rc.g=gc.b=bc.a=aJoxApi.writePixelsRect(c,

c++ - 使用 SWIG 在 Python 中访问 C++ typedef

我有一个C++API,我想用Python包装。我想调用一个包装的C++函数myfunc,将以下C++typedef作为参数/*my_header.h*/namespacemy_namespace{typedefstd::vectorBar}其中Foo是一个C++类。我设法包装了函数和底层类Foo,但我不知道如何创建Foo的vector。我将.h文件包含在我的SWIG.i文件中,如下所示/*my_interface.i*/%{#include"my_header.h"typedefmy_namespace::BarBar;%}%include"my_header.h"我还尝试在SWIG中