16得票2回答
从Rust调用动态链接的Haskell代码

我正在尝试将一些Rust代码与一些Haskell代码编译在一起。我已经设置了一个测试系统,其中包含一个文件Fibonacci.hs,其中定义了一个在Haskell中计算斐波那契数列的函数,并通过Haskell的FFI导出该函数作为 fibonacci_hs (参见这里:https://gith...

15得票3回答
如何从Rust调用C++动态库?

我想从Rust中调用一个C++动态库(*.so),但我不想从Rust中构建它。就像这样,cc::Build::new()     .file("src/foo.cc") .shared_flag(true) .compile("libfoo.so"); 在某些情况下,我只需要调...

15得票1回答
Cabal FFI 依赖

我正在在Windows上制作一个小的Haskell游戏,希望每次用户按键时都能响应。因为getChar在Windows上表现奇怪,我使用FFI来访问conio.h中的getch,如此处所述。相关代码如下:foreign import ccall unsafe "conio.h getch" c...

15得票2回答
如何在Rust的FFI中使用C预处理宏?

我正在编写一些代码,与一个用C语言编写的现有库进行接口。在我的Rust代码中,我希望能够使用来自CPP宏的值。如果我有一个名为include.h的C文件,它看起来像这样:#define INIT_FLAG 0x00000001 我希望能够像这样在 Rust 中使用它:#[link(name="...

15得票1回答
为什么在构建DLL时Rust会导出整个标准库?

我目前正在尝试使用Rust编写一个动态库,该库将从现有程序中加载。 我需要导出一些具有特定名称和调用约定的函数。 一切正常,但是一旦我从标准库中use任何内容: 动态链接库的大小会膨胀到超过3MiB(不是很漂亮,但我可以忍受) 整个标准库都被导出到DLL中。 这是所有导出函数的列表:htt...

15得票2回答
从C FFI调用Rust时如何避免panic,而不需要创建线程

我正在为Duktape JavaScript解释器编写Rust包装器(https://github.com/emk/duktape-rs)。在正常使用情况下,调用堆栈将如下所示: Rust:任意应用程序代码。 Rust:我的库包装器。 C:Duktape解释器。 Rust:我的Rust代码。...

15得票1回答
Haskell Foreign Types的惯用用法是什么?

问题: 从Haskell类型转换为Foreign类型再返回需要大量的样板代码。 例如,假设我们正在使用以下Haskell数据结构:data HS_DataStructure = HS_DataStructure { a1 :: String , b1 :: S...

15得票3回答
使用Rust FFI时,如何初始化一个不透明的C结构体?

以下是我想在C语言代码中实现的内容:#include <some_lib.h> int main() { some_lib_struct_t x; some_lib_func(&x); } 我该如何在Rust中使用库?以下是我目前的情况:extern cra...

14得票4回答
在.NET中调用Haskell函数

我想从一个C#程序中调用一个具有以下类型的Haskell函数: string -> string 我想使用hs-dotnet桥接两个世界。作者声称这是可能的,但没有提供此案例的示例。提供的唯一示例是使用Haskell从.NET调用的示例。 是否有这种用法的示例,或如何使用它?(我在桥...

14得票2回答
将一组NumPy数组传入C函数进行输入和输出

假设我们有一个C函数,它接受一组或多组输入数组,对其进行处理,并将输出写入一组输出数组。函数签名如下所示(其中count表示要处理的数组元素数): void compute (int count, float** input, float** output) 我想通过ctypes从Pyt...