我想在C++应用程序中嵌入Perl,并寻找通过newXS()从Perl调用C++的方法。除了函数指针外,我需要将一个自定义指针关联到由newXS()创建的CV。该指针包含一个C++上下文。我不想使用全局变量来实现这一点。是否有常见的方法来解决这个问题?
在更广泛的范围内,问题可能是是否有可能向通过newXS()创建的CV添加闭包,以及如何在调用已注册的C函数时引用它。 CvPADLIST() 似乎是最完美的地方,但对于设置了 PERL_IMPLICIT_CONTEXT 的 XSubs,使用它似乎是无效的(在perl的pad.c开头的注释中)。它是否可以被忽略?还有其他地方可以放置CV本地数据吗?
在更广泛的范围内,问题可能是是否有可能向通过newXS()创建的CV添加闭包,以及如何在调用已注册的C函数时引用它。 CvPADLIST() 似乎是最完美的地方,但对于设置了 PERL_IMPLICIT_CONTEXT 的 XSubs,使用它似乎是无效的(在perl的pad.c开头的注释中)。它是否可以被忽略?还有其他地方可以放置CV本地数据吗?
sub make_closure { my $ctx = new_context(); return sub { xs_func($ctx, @_) }; }
- melpomeneeval
生成一个包装器...... 这是一种可能性。 正在研究PERL_MAGIC_ext,也许还有其他方法...... - Konrad Eisele