gpt4 book ai didi

haskell - 用于为 Haskell(和其他语言)包装 C++ 库的选项

转载 作者:行者123 更新时间:2023-12-02 17:21:21 27 4
gpt4 key购买 nike

这个问题是关于设计的/是相当开放的。

我想使用OpenCV ,一个来自 Haskell 的大型 C++ 库。目前最接近的解决方案可能是 Arjun Comar 尝试调整 Python/Java 绑定(bind)生成器。请参阅here , here ,和here 。他的方法生成一个 C 接口(interface),然后使用 hsc2hs 对其进行包装。由于 OpenCV 在其 API 中缺乏引用透明度,并且频繁使用调用参数进行输出,为了使 Arjun 的方法完全成功,他需要为 OpenCV 定义一个新的 API,并根据现有 API 来实现它.

因此,使用 interface description languages (IDL) 来全面定义 API 似乎并不需要太多额外工作。 ,例如 SWIG、protobuf-with-RPC 或 Apache Thrift。这将为 Haskell 之外的多种语言提供接口(interface)。

我的问题:

  1. 对于无服务器解决方案,还有比 SWIG 更好的吗?(我只想调用 C++;我不想通过本地服务器。)

  2. 如果没有好的无服务器解决方案,我应该使用 protobuf-with-RPC 还是 Thrift?

    1. 相关:Thrift 的 Haskell 支持有多好?从代码来看,它看起来需要更新(我看到对 GHC 6 的引用)。

    2. 相关:什么是好的 protobuf-with-RPC 解决方案?

最佳答案

  1. 使用 Apache Thrift,您可以获得 Haskell 支持。你是对的,代码通常不是“最新的”,但你很少关心。您可以在其他抽象级别上执行复杂的操作,并在消息传递级别上使操作尽可能简单。

  2. Google Protobuf 不支持 Haskell,SWIG 也不支持。通过 Protobuf,你可以获得 C++、Java、JavaScript 和 Python,据我所知,这是 Google 的主要语言。看看this推介会。毫无争议,Thrift 和 Protobuf 是业内最好的。

在你的情况下,你似乎必须使用 Thrift,因为它支持 Haskell。

关于haskell - 用于为 Haskell(和其他语言)包装 C++ 库的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21034542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com