问题标签 [xs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 防止 C++ 异常使我的 Perl 脚本崩溃
我有一个 Perl 脚本,它使用了一些可能使用 xs 包装的 C++ 库。当库抛出异常时,即使从内部调用它也会使我的 Perl 脚本崩溃eval
。如何跳过异常并防止我的脚本崩溃?
Perl 版本是 v5.12.4
c - 在 Perl XS 中使用 struct
我是 Perl XS 的新手,我正在尝试将 C 函数转换为 Perl 子例程。
我有以下 C 函数
其中parse
函数接受指向的指针struct parser
、字符串和字符串的长度。struct parser
定义如下:
该函数将其结果存储在result
参数中。
我想将此函数转换为 Perl XS。我正在做的是这样的:
如何更改上面的代码以parse_xs
像这样在 Perl 代码中运行
其中$result
是parse
C 函数的结果。
multithreading - 是否可以在主线程之外使用/创建/修改 SV/HV/AV?
我正在尝试在使用 pthread_create() 创建的新线程中使用 newSVpvn() 创建 SV。此时我的程序崩溃了。发生崩溃的 C 函数如下所示
和 XSUB
测试示例
完整代码可以在这里找到:https ://github.com/olegwtf/p5-Net-DNS-Native/blob/fbc57dbe9e6832afed8d46cd369db6930bbd53bc/Native.xs
那么,有没有可能做我想做的事?
perl - when should I #define NO_XSLOCKS
NO_XSLOCKS
allows the usage of some error checking macros in XS code when combined with #include XSUB.h
. However, its use seems to go beyond that. It was recently suggested that I add it to my XS file for better compatibility with ActiveState perl, with this issue given as an example.
What else does #define NO_XSLOCKS
do, and when should I use it in my XS code?
perl - Perl/XS 中的过程和面向对象的接口
我目前正在编写我的第一个 XS 模块(只是 C 数学库的一个包装器)并取得了不错的成功。最大的问题是文档很难理解和/或不完整。
我已经成功地在 XS 中编写了一个构造函数,并从库中实现了一些函数作为方法调用。这很好用。
现在我也想实现一个过程接口。出于这个原因,我需要知道它是否是一个方法调用。如果它是一个方法调用,则用函数计算的数字存储在实例中,如果它是对函数的过程调用,它的数字作为第一个参数给出。这是余弦函数的当前代码:
perl - sv_catpv() 和 sv_catpvs() 有什么区别?
根据perlapi,sv_catpv()
工作原理如下:
NUL
将- 终止的字符串连接到 SV 中字符串的末尾。如果 SV 设置了 UTF-8 状态,则附加的字节应该是有效的 UTF-8。处理“get”魔法,但不处理“set”魔法。
void sv_catpv(SV *const sv, const char* ptr)
不过,我发现的大多数 XS 教程都使用sv_catpvs()
了 ,它是这样做的:
类似
sv_catpvn
,但采用文字字符串而不是字符串/长度对。
void sv_catpvs(SV* sv, const char* s)
好吧,这不是很有帮助,所以让我们看一下sv_catpvn()
:
将字符串连接到 SV 中字符串的末尾。指示要复制的
len
字节数。如果 SV 设置了 UTF-8 状态,则附加的字节应该是有效的 UTF-8。处理“get”魔法,但不处理“set”魔法。
void sv_catpvn(SV *dsv, const char *sstr, STRLEN len)
因此,除了将字符串长度作为单独的参数外,它的作用与它sv_catpvn
相同,除了它采用文字字符串外。sv_catpv
sv_catpvs
sv_catpvn
sv_catpv
和我之间是否有一些微妙的区别sv_catpvs
,或者它们只是做同一件事的两种方法?
c - 如何将 Perl 堆栈变成 AV?
注意:这是关于 Perl 内部,C 代码本身的问题。
我想将 Perl 堆栈(即 SP)的内容作为数组传递给 Perl 函数。
- 是否有将堆栈复制到 AV 的现有方法?
- 如果没有,如何实现它?该数组可以是只读的。
- 如何将 AV 变成参考?
c++ - 从 Perl 代码调用 C++ 程序
我编写了调用子模块数千万次的 perl 代码。子模块是计算密集型的,它的运行时间很慢。我找到了一个完全执行子模块功能的 C++ 程序,我想用 C++ 程序替换子模块。我想知道是否必须编写 XS 代码来接口程序。在 perl 代码中使用“system”命令直接调用 C++ 程序是否会大大降低性能?谢谢!
c - C程序在调用perl函数newSVpv()时不断崩溃
尝试使用 perl 数据结构(部分作为在 C 中支持关联数组的一种方式),但以下程序不断崩溃。它编译得很好,但会在使用 newSVpv() 时崩溃。不知道为什么。
编译它的行是
我拥有的 perl 是在 Ubuntu 12.04.4 LTS 上运行的 5.14.2。
感谢您的任何提示!
更新:添加了 gdb 跟踪。谢谢你的提问。gdb 跟踪:
windows - activestate perl windows - 查找所有已安装的 xs 模块
为了准备 perl 升级,我想知道为我的本地 activestate perl 5.16 安装安装了哪些perl xs 模块。
有人知道我怎么能得到这样的 perl 模块列表吗?