【问题标题】:Ruby FFI not finding certain functions?Ruby FFI 找不到某些功能?
【发布时间】:2016-11-15 16:48:01
【问题描述】:

我正在尝试使用 Ruby 的 FFI 库来链接来自 bitcoin-core secp256k1 library 的函数。

为了使secp256k1_ecdsa_sign 函数可以访问,我使用自动工具构建了libsecp256k1(如README.md 中的指示)。然后我通过运行g++ -shared secp256k1/src/.libs/libsecp256k1_la-secp256k1.o 创建了一个在 FFI 中使用的共享对象。使用 FFI 将其导入到我的 Ruby 文件中,我可以使用该函数并且一切正常。

我正在尝试对同一 C 项目中的 secp256k1_ecdsa_sign_recoverable 函数执行完全相同的操作,只是不同的头文件。但是,我收到错误 Function 'secp256k1_ecdsa_sign_recoverable' not found in [bin/secp256k1.so] (FFI::NotFoundError)

我认为这要么是因为我没有正确创建共享对象(使用前面提到的g++ 命令创建),要么因为此函数由于某种原因在 C 项目中不是面向公众的函数(尽管我对 C 的了解不够,不知道如何判断是否是这种情况)。

如果有人能帮我弄清楚如何使用这个功能,将不胜感激。

【问题讨论】:

    标签: c++ c ruby bitcoin ffi


    【解决方案1】:

    仅当您在构建 libsecp256k1 库时指定时,才会包含 secp256k1_recovery.h 文件。具体来说,我需要运行./configure --enable-module-recovery 而不是./configure

    【讨论】:

    • ./configure --enable-module-recovery 为我工作,谢谢!
    猜你喜欢
    • 2019-11-06
    • 1970-01-01
    • 2020-10-04
    • 2016-10-04
    • 1970-01-01
    • 2013-08-21
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多