【发布时间】: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 的了解不够,不知道如何判断是否是这种情况)。
如果有人能帮我弄清楚如何使用这个功能,将不胜感激。
【问题讨论】: