9得票2回答
RMAGICAL是什么?

我正在试图理解一些我继承的XS代码。我一直在尝试添加注释到一个调用Perl魔法的部分,但是我找不到任何文档来帮助我理解这行代码: SvRMAGICAL_off((SV *) myVar); RMAGICAL是用来做什么的?在使用Perl魔术变量时,何时打开或关闭它? 更新 Perlg...

9得票1回答
Perl XS - 从C数组返回Perl数组

我是一名有用的助手,可以为您翻译文本。 使用XS技术,我正在尝试将C数组中的值传递到Perl数组中,以便在脚本中使用。 以下是我的xs文件中的代码: AV * DoubleArray::getPerlArray() CODE: r = newAV(); for(s...

9得票2回答
我能使用一个模块,然后卸载它并缩小optree吗?

免责声明 我不确定是否使用了正确的术语。下面提到的膨胀可能不是由optree负责,而是由DynaLoader加载的符号未被释放。 是否有可能使用一个模块,如POSIX.pm,将其卸载并缩小optree大小而不进行 重新执行perl Forking 我尝试过的东西: Class::...

8得票1回答
Perl XS未使用变量 'Perl___notused' 警告

我正在学习如何从Perl调用C++代码,并且首先尝试从Perl脚本创建一个基本的C++对象。 为此,我首先执行了h2xs命令: h2xs -A -nMyClass 然后我向生成的Makefile.PL添加了以下两个参数,以使用g++编译器。 CC => 'g++', LD =&g...

8得票1回答
为什么XS订阅使用const char *?

许多 Perl XS 代码使用 const char * 作为 XS 子例程的返回值,而不仅仅是 char *。例如: const char * version(...) CODE: RETVAL = chromaprint_get_version(); OU...

8得票1回答
支持将自动创建的文件句柄作为参数传递给Perl XS例程

问题 我如何支持在XS函数中自动生成文件句柄的参数? 我正在XS封装一个返回文件描述符的C函数,并且我想以类似于open()的方式将该文件描述符作为Perl文件句柄参数呈现。例如: myfunc(my $fh) or die "Error: $!"; do_something_with_...

8得票1回答
让旧的库适配Perl XS和PerlIO

我是一名XS初学者,目前正在研究修改一个使用了15年以上C库的现有XS模块(实际上,该模块基本上只是将这个库粘合在一起)。问题是,我希望能够像下面这样使用PerlIO字符串技巧: open($fh, '<', \$string); 然后将$fh传递给期望FILE的库的XS粘合剂。问...

8得票1回答
这段代码中是否存在XS内存泄漏问题?

无法找到内存泄漏在这段代码中的发生位置。 基本上,我想为返回二维数组的C函数编写XS包装器。 C函数: int CW_returnArray(double** arrayDouble, int* count) { int number = 10; int index, i...

8得票1回答
使用参数调用Perl例程

我需要在我的C程序中调用一个perl例程。这个perl例程接受以下参数:$a,$b,$c,其中$a和$b是整数,$c是字符串(可能包含二进制字符)。根据perlcall文档,以下是进行调用的方法。 I32 call_sv(SV* sv, I32 flags); I32 call_pv(cha...

7得票3回答
使用闭包的Perl newXS()函数

我想在C++应用程序中嵌入Perl,并寻找通过newXS()从Perl调用C++的方法。除了函数指针外,我需要将一个自定义指针关联到由newXS()创建的CV。该指针包含一个C++上下文。我不想使用全局变量来实现这一点。是否有常见的方法来解决这个问题? 在更广泛的范围内,问题可能是是否有可能...