问题标签 [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.
perl - 为什么 XS 潜艇使用 const char *?
许多 Perl XS 代码使用const char *
XS 子程序的返回值,但从不只是char *
. 例如:
有人可以解释为什么const
是首选吗?在我的测试中,无论是否const
使用,返回的标量都是可修改的。
c - Perl XS:内存管理
我对 Perl XS 完全陌生。
我的简单 testfunction 获取一个字符串并附加一些东西。在 Perl 中是一个标量字符串输入和输出。
在函数中,我有一个 malloc。释放内存的正确方法是什么?
谢谢!克里斯
c - XS:向外部库的函数传递 Perl XS 回调
免责声明:在perlmonks 询问。
我希望我能正确地描述和描述我的问题......在 XS 中,我试图将回调发送到外部库的函数中,其中回调具有 Perl 特定的函数。XSUB 作为函数指针传递给外部 C 函数。依次发送的 XSUB 回调回调到 `main` perl 应用程序中的子程序:
这是段错误。我认为这是因为外部库不理解被调用的 perl 函数。不过,如果我直接调用 C `callback()` 函数,一切正常。
我可以做一些魔术来使外部库“看到” Perl C 函数,还是我做错了什么?
这是我正在测试的代码:
输出:
如果我从回调中删除 perl 特定的 C 调用并只执行“printf()”或其他纯 C 工作,那么事情会继续进行而不会出现段错误。
json - mod_perl 下的 JSON::XS 因 POST 请求而失败
我在 Ubuntu 16.04.1 LTS 上使用默认安装的 Apache 和 mod_perl,我还使用默认的 JSON::XS 复制了它,并从 CPAN JSON-XS-3.02 更新到最新版本。
如果我不使用 mod_perl,下面的代码适用于所有情况。
下面的脚本和 html 在通过 mod_cgi 与 POST 和 GET 请求一起使用 perl 时工作。
但是,如果我使用的是 mod_perl 并且我使用 POST(如提供的 html 中所示),它会失败,“Hello”不会打印,并且我在我的 apache 日志文件中收到以下错误。
用法:JSON::XS::new(klass)。
如果我通过 GET 方法传递相同的参数,则脚本可以正常工作。
测试2.pl
调用上面的 HTML(在服务器上命名为 test2.pl)
c - Perl XS 中的 OpenSSL 和线程
我在 Perl-XS-Module 中使用 OpenSSL。我有一个调用 OpenSSL-API 函数的 C 函数。用于测试目的非常简单(初始化 openssl,读取密钥,制作 RSA 对象并使用它,没有参数)。不需要大检查,地址和内存都可以。
XS 是标准的h2xs-lssl
和-lcrypto
.Makefile
如果我做纯 C/C++,那是可行的。如果我将它放在 XS 模块中并在线程外的 Perl 中使用它也可以。但是如果我在 Perl 和线程中使用它,它会崩溃。
现在我会说那是因为我没有任何线程处理。但是,如果我查看其他 Perl 模块(例如 Crypt::OpenSSL::RSA),我也找不到那里的特殊线程处理。
我对 XS 很陌生,也许我错过了一些东西。也许有人可以给我一个提示,谢谢!
perl - 如何检查每一行是否在csv_xs perl中定义了所有列匹配的标题
我需要检查 csv 文件中的每一行是否具有根据标题定义的所有列,即使没有值它应该像'||' 其中'|' 是分隔符。例子:
EmpId|EmpName|EmpSalary|EmpDept -> 标头
001|AAA|100|Dept1
002|BBB||Dept2 --> 即使 Salary 没有值,此行也是有效的
003|AAA|Dept1 ---> 此行无效。
由于我使用 CSV_XS(将文件读入 arrayOfHashes)以便于数据操作,我如何使用 CSV_XS 检查上述场景,其中文件已读入哈希数组。谢谢 - 库马尔
perl - Perl XS:共享库链接
我对 perl 相当陌生,我正在尝试使用 XS 从我的 perl 脚本中调用特定的 C 函数。我正在尝试从现在开始从测试脚本中调用 C 函数。运行“make test”时出现以下错误“——
这是我的 Makefile.PL-
);
这是我的 test.xs-
perl - 为什么在 XSUB 的输出变量中包含 SvSETMAGIC()?
阅读perlxs 文档,我来到了关于OUTPUT
关键字的部分:
xsubpp为 XSUB 的 OUTPUT 部分中的所有参数发出自动
SvSETMAGIC()
,除了 RETVAL。这是通常需要的行为,因为它负责在输出参数上正确调用“设置”魔法(如果哈希或数组元素参数不存在,则必须创建它们)。
我不确定我是否理解为什么需要set
魔法(以及为什么不需要魔法RETVAL
)?为什么set
哈希和数组元素参数需要魔法?
perl - 有没有办法从 XS 访问 perl 中的特殊标记?
在 perl 中,诸如__PACKAGE__
, __SUB__
, __FILE__
,之类的特殊标记__LINE__
存在并且可从脚本中获得。
__PACKAGE__
我想我可能会从XS
as中获得价值HvNAME( PL_currstash )
。
但是如何访问其他人?
是否有特殊的界面可以访问所有这些XS
?比如:CTX->package
等CTX->sub
。
perl - 如何将 C NULL 传递给基于 XS 的函数?
我正在尝试使用 Crypt::OpenSSL::EC 模块中的 Crypt::OpenSSL::EC::EC_POINT::mul() 函数。它有这样的 C 原型:
而且我需要传递 NULL, NULL 而不是EC_POINT *q
,const BIGNUM *m
就像这里所做的那样:https ://stackoverflow.com/a/12482384/3090865
但是这个模块有这样的类型图:
所以,如果我通过 undef 或 0,我会得到“argument is not an object”错误。是否可以在不更改此模块的情况下制作我想要的东西?也许我可以以某种方式创建基于 NULL 的对象?