草庐IT

swig-template

全部标签

c++ - SWIG:仅使用 header 和共享库为 Perl 包装 C++,无法定位可加载对象错误

我正在尝试学习SWIG,但在让SWIG在Linux机器上使用perl时遇到了一些问题。我有文件Dog.h、Crow.h、Animal.i和libmylib.so。所有这些文件都在同一个目录中。libmylib.so是使用Dog.cpp和Crow.cpp编译的,它们分别引用Dog.h和Crow.h。我的Animal.i文件如下:%moduleAnimal%{/*Includestheheaderinthewrappercode*/#include"Dog.h"#include"Crow.h"%}/*Parsetheheaderfiletogeneratewrappers*/%includ

c++ - template<> 用于成员枚举的显式特化

根据17.7.3[temp.expl.spec]第5段(N4659),...Membersofanexplicitlyspecializedclasstemplatearedefinedinthesamemannerasmembersofnormalclasses,andnotusingthetemplatesyntax.Thesameistruewhendefiningamemberofanexplicitlyspecializedmemberclass.However,templateisusedindefiningamemberofanexplicitlyspecializedm

c++ - 想要 : a C++ template idea to catch an issue, 但在编译时?

我们有一个常量结构数组,像这样:staticconstSettingsSuT_table[]={{5,1},{1,2},{1,1},etc};结构如下:size_bytes:num_items:其他“元数据”成员所以“总大小”是单个元素的size_bytes*num_items。所有这些信息都在const数组中,在编译时可用。但是,请注意,_table的总大小与EEPROM本身的大小无关。_table不镜像EEPROM,它只描述了布局、用途和我们需要的其他“元数据”类型的信息。但是,您可以使用此元数据来确定我们正在使用的EEPROM的数量。数组简单地描述了存储在外部EEPROM中的数据

java - 如何使用 SWIG 生成的接口(interface)将字符串从 Java 传递给 C++ 函数

我有一堆以Cstd:string作为函数参数的C++函数。我想将java字符串传递给那些函数。我已经在J​​ava和C++之间生成了一个SWIGJNI接口(interface)。我可以看到无参数构造函数很好,但是如果我尝试在构造函数中使用String参数编译我的java,我会得到“找不到符号”,我认为这是因为类构造函数的方式发生了一些有趣的事情被定义。如何解决这个问题?类型图是答案吗?如果是这样-你从哪里开始? 最佳答案 一种方法,如果您要调用一小组函数,可能是简单地将采用std::string的C++方法与采用char*的方法包装

Python 中的 C++ API - SWIG、重新设计或消息传递

好的,这里是快速且希望简单的问题...我有一个大型C++API,它基本上是一个带有顶级XML类型协议(protocol)的套接字API。这是一个公司的分布式源码包。由于一些奇怪的原因,所有源代码都被写入头文件(包括函数实现)(我猜他们认为开发人员更容易导入H文件而不必担心编译多个cpp文件??)。该源代码还提供C、Java和.NET版本。我正在编写的应用程序是在Linux上使用Python编写的,需要通过Python使用此API。我的三个选项似乎是要么单独运行应用程序,在它们之间使用消息传递协议(protocol),运行SWIG(或类似的)以生成PythonHook,要么将所有源代码重

c++ - 错误 C2995 : function template has already been defined

此代码产生17错误C2995:函数模板已被定义;在添加#include"set.h"header之前存在一组单独的错误。有一个与此关联的私有(private).cpp和.h文件。/**File:private/set.cpp*LastmodifiedonThuJun1109:34:082009byeroberts*-----------------------------------------------------*Thisfilecontainstheimplementationoftheset.hinterface.*BecauseofthewayC++compilestemp

c++ - 两阶段查找 : is it possible to easily mix inheritence and templates

简介:C++标准区分依赖模板参数的符号名称和不依赖模板参数的名称,这称为两阶段名称查找(参见here)。定义模板时,会尽快解析非相关名称。另一方面,从属名称仅在模板实例化时解析。示例:templatestructBase{typedefTtype;staticconstintn=3;virtualintf()=0;intf(intx){returnx*2;}};//doesn'tcompile!templatestructDerived:Base{typefield;//Thecompilerdoesn'tknowBase::typeyet!intf(){returnn;}//thec

python - 使用 SWIG 和 Python/C API 包装返回 std::map 的函数

我想包装一个返回std::map的C++例程整数和指向C++类实例的指针。我无法让它与SWIG一起使用,如果能提供任何帮助,我将不胜感激。我试图通过一个简单的例子将这个问题归结为它的本质。headertest.h定义如下:/*Filetest.h*/#include#include#includeclassTest{private:staticintn;intid;public:Test();voidprintId();};std::mapget_tests(intnum_tests);实现在test.cpp中定义下面:/*Filetest.cpp*/#include"test.h"s

python - 将 python 函数传递给 SWIG 包装的 C++ 代码

我正在尝试使用SWIG为python包装一个C++库。该库经常使用回调函数,方法是将特定类型的回调函数传递给类方法。现在,包装代码后,我想从python创建回调逻辑。这可能吗?这是我正在做的一个实验来找出它..目前不起作用。头文件和swig文件如下:paska.h:typedefvoid(handleri)(intcode,char*codename);//handleriisnowanaliastoafunctionthateatsint,stringandreturnsvoidvoidwannabe_handleri(inti,char*blah);voidhandleri_eat

c++ - SFINAE 优雅地检查 "template template class"(在模板参数中)

如何在模板参数中检查模板模板类的类型?例子B和C是模板类。我想创建一个类D那可以是D或D.只有D有D::f().这是我的解决方法(demo)。它有效。#includeusingnamespacestd;classDummy{};templateclassB{};templateclassC{};templateclassBC>classD{//f()isinstantiatedonlyif"BC"=="B"public:template>statictypenamestd::enable_if>::value,void>::typef(){}//^#1};intmain(){D::f(