我想将Perl嵌入到C++应用程序中,并且正在寻找通过newXS()从perl调用C++的方法。除了函数指针,我需要关联一个自定义指针指向由newXS()创建的CV。指针包含一个C++上下文。我不想为此使用全局变量。有没有一种常见的方法来做到这一点?添加了闭包的Perl newXS()添加了闭包
范围较广的问题也许是天气有可能对封闭添加到由newXS(),以及如何创建引用它当C函数被调用的CV这是它注册。 CvPADLIST()似乎是一个完美的地方,但是对于XSubs来说,当设置PERL_IMPLICIT_CONTEXT时使用它似乎是无效的(在perl的pad.c开头注释。是否可以忽略它?)。有其他地方我可以把简历本地数据?
我不知道XS,但你总是可以让XS函数接受一个明确的参数,然后在纯Perl中执行闭包:'''''''''''make make_closure {my $ ctx = new_context(); return sub {xs_func($ ctx,@_)}; }' – melpomene
@melpomene这很有趣,我可以通过'eval'动态生成一个包装器,每个xs函数都可以注册...这是一种可能性。正在看PERL_MAGIC_ext,也许另一种方式... –