问题标签 [nativecall]
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.
raku - 在 Perl 6 中声明“本机”类型
在natives.pm6
module中,许多原生类型都是这样声明的:
你显然可以以同样的方式使用它,
显然,您需要native
指定一个表示,因为如果native
不使用它将失败。与 相同is repr
,因此它们齐头并进。然而,这只是一种行为观察。
native
但是,除了实现中的那些示例之外,我还没有找到任何关于何时何地使用的文档。任何帮助将不胜感激。
windows-10 - 在 Windows 10 上将 Perl 6 安装到 MSYS2
我想使用 Perl 6 及其 NativeCall 库在 Windows 10 上开发 GTK+3 应用程序。我已经在上面安装了 MSYS2 和 GTK+3,并且可以使用它运行一个示例 GTK+3 C 程序。但我无法在 MSYS2 上安装 Perl 6。我试图在网上搜索相关的博客或帖子,但找不到任何解决方案。如何在 MSYS2 上安装 Perl 6 (Rakudo)?
utf-16 - Perl6 NativeCall with Str iscoded('utf16') 得到随机损坏的结果
我正在GetFullPathName
使用 perl6 脚本映射 Windows API NativeCall
,因此我编写了以下内容:
代码是随机工作的,直到我附加一个"\0"
after $path
。
[编辑] 多次调用的结果:
[12] => D:\dev\pa.t
[12] => D:\dev\pa。
[12] => D:\dev\pa.槟
[9] => D:\dev\pa
[9] => D:\dev\pa
还有另一种正确的方法吗?
visual-studio - Perl6 NativeCall 在本机库中找不到符号
我有一个使用 NativeCall 的模块,它适用于 Linux 和 macOS,但不适用于 Windows。当我尝试在 Windows 上使用该模块时,出现很多错误,例如:
我将 cmake 用于我对所有三个操作系统的 C++ 依赖项。在 Linux 和 macOS 上我可以cmake ..; make; sudo make install
,在 Windows 上我cmake -G "Visual Studio 15 2017 Win64" ..
然后在 Visual Studio 中打开创建的“.sln”进行编译。构建成功,在所有三个操作系统上都没有错误。
有没有人知道我需要做什么/改变才能让我的模块在 Windows 上工作?
raku - 大型 Perl6 CArray 上的高性能数学运算?
我有一些由本机子返回的大型 CArray,我需要对其执行基本的元素数学运算。CArray 通常是 10^6 个元素的数量级。我发现对它们调用 .list 以将它们视为普通的 Perl6 类型非常昂贵。有没有办法在保持 CArrays 的同时对它们进行高性能的元素操作?
简短的测试脚本来计时我尝试过的一些方法:
输出:
for 循环方法似乎最快,但 CArray 的处理时间仍然比 List 长 6 倍。
有任何想法吗?
raku - 使用 NativeCall 将 C 库函数合并到 Perl6
我正在尝试在 Perl6中使用lgamma
C 语言。math.h
如何将其合并到 Perl6 中?
我努力了
这适用于第一个数字 (a Str
),但对于第二个数字 ( ) 失败$x
,给出错误:
我想非常简单地做到这一点,就像在 Perl5 中一样:use POSIX 'lgamma';
然后lgamma($x)
但我不知道如何在 Perl6 中做到这一点。
c - 如何使用 NativeCall 缓解 Rakudo 中的错误?
我希望能够在具有 REPR CStruct/CPointer 的类中使用双指针:
Perl 6 代码:
短高尔夫:
只是由于Rakudo中的错误,我无法弄清楚该怎么做。有没有更好的方法可以处理代码的 C 部分中的错误(这就是我这样写它的原因)?
shared-libraries - perl6 NativeCall 在 Darwin 上找不到库
我正在使用 NativeCall 来熟悉 Perl6 的那一面。当然,我正在尝试首先加载 libstatgrab(还有什么?)。
所以我从最简单的部分开始——主机信息。由于还没有集群支持,这只是一个结果 - 不用担心复杂性。
编码:
启动它(哑)会导致加载库错误:
好的 - 给它一些搜索路径:
使用时相同的图片DYLD_LIBRARY_PATH
- Darwin 上的 dlopen(3) 也支持。
但是在目录中更改有效:
调用 moarvm 的方式是否缺少搜索路径直通?
raku - NativeCall 中的位域
我正在尝试为 Cgraph 创建 Perl6 绑定,其中一个结构为其某些属性设置了位字段,其值低于 8。我应该如何在我的模块中表示它?
我尝试使用is nativesize(x)
trait 定义自定义类型,但 CStructs 仅支持 8 位宽的倍数的类型。
C 示例代码:
我尝试了什么:
尝试将我的模块与该代码一起使用失败并显示以下错误消息:
CStruct only supports native types that are a multiple of 8 bits wide (was passed: 2)