如何访问C++;使用SWIG从Perl编写程序?
我想从perl脚本访问C++程序的模板列表,并使用这些值。 示例代码:如何访问C++;使用SWIG从Perl编写程序?,perl,swig,Perl,Swig,我想从perl脚本访问C++程序的模板列表,并使用这些值。 示例代码: typedef list < Struct1 * > sturct1_list; struct Struct2 { int i; struct1_list List1; } struct Struct1 { int j; } 现在打印为: Reference type: \_p\_std\_\_listTutils\_\_Struct1\_p\_t 如何使用此函数从结构中获取
typedef list < Struct1 * > sturct1_list;
struct Struct2
{
int i;
struct1_list List1;
}
struct Struct1
{
int j;
}
现在打印为:
Reference type: \_p\_std\_\_listTutils\_\_Struct1\_p\_t
如何使用此函数从结构中获取值
从重复问题更新:
在接口文件中,我把
%template(ListStruct1) std::list< Struct1 * >;
我能够使用这些元素。但是我不知道如何使用这些API访问列表中的各个元素?或者我在接口文件中遗漏了什么
更新:
typemap是否可以在此处以数组形式返回列表???首先,是常规信息
演示如何对模板进行包装
同一教程展示了如何使用Perl中的模块,但是Perl示例没有涉及模板
演示如何使用向量执行此操作
这似乎提到了接口
第二,关于名单
在您的界面中,尝试:
%include "std_list.i"
%template(ListStruct1) std::list< Struct1 * >;
更新:当然,我忽略了提到(甚至意识到)这对python、java和其他一些语言非常有效,但在perl中完全失效…在您的界面中,请尝试:
%include "std_list.i"
%template(ListStruct1) std::list< Struct1 * >;
更新:当然,我没有提到(甚至没有意识到)这对于python、java和其他一些语言来说非常有效,但是在perl中完全被破坏了…hi。。我看了文件。。但是我仍然很困惑如何从perl访问该列表?您不能从perl“访问”列表中的数据,因为默认的列表接口没有为您提供任何这样做的方法。请参阅3个可能答案的答案,根据您需要的内容,我们可以做%Type(out)列表{}并将其作为数组返回吗?您可能可以,但我不太清楚,如果把它变成向量状的Perl数组,那么C++中的列表(与向量相反)的目的是什么?我看了文件。。但是我仍然很困惑如何从perl访问该列表?您不能从perl“访问”列表中的数据,因为默认的列表接口没有为您提供任何这样做的方法。请参阅3个可能答案的答案,根据您需要的内容。我们可以做%Type(out)列表{}并将其作为数组返回吗?可能您可以,但我不太清楚C++中有列表的目的(与向量相反)。如果您只是将其转换为类似于向量的Perl数组,而没有支持Perl的std_列表,那么您将受到大小、空、清除和推送的限制。我用swig 1.3.39进行了测试。然而,Vector提供了push、pop、get和set,这实际上可能很有用。。我没有尝试指定的%define指令。。但我希望它在perl中工作。。不管怎样,我只是尝试一下。没有一个std_列表。我支持perl,你只限于大小,空,清除,推。我用swig 1.3.39进行了测试。然而,Vector提供了push、pop、get和set,这实际上可能很有用。。我没有尝试指定的%define指令。。但我希望它在perl中工作。。无论如何,我会试试的。。
%include "std_list.i"
%template(ListStruct1) std::list< Struct1 * >;
%define SWIG_EXPORT_ITERATOR_METHODS