我正在尝试使用Ruby的FFI库链接bitcoin-core secp256k1 library中的函数。
为了使secp256k1_ecdsa_sign函数可访问,我使用autotools构建了libsecp256k1(如README.md中所述)。然后我通过运行g++ -shared secp256k1/src/.libs/libsecp256k1_la-secp256k1.o
创建了一个在FFI中使用的共享对象。使用FFI将其导入我的Ruby文件让我使用该功能,一切都运行良好。
我正在尝试使用secp256k1_ecdsa_sign_recoverable函数执行完全相同的操作,该函数位于同一个C项目中,只是一个不同的头文件。但是,我收到错误Function 'secp256k1_ecdsa_sign_recoverable' not found in [bin/secp256k1.so] (FFI::NotFoundError)
。
我认为这是因为我没有正确创建共享对象(使用前面提到的g++
命令创建),或者因为这个函数出于某种原因而不是C项目中面向公众的那个(虽然我不太了解C知道如何判断是否是这种情况。)
如果有人可以帮我弄清楚如何使用这个功能,我们将不胜感激。
答案 0 :(得分:4)
最终只有在构建libsecp256k1库时指定[HttpPost]
public MyObject Method([FromBody]Stream s, [FromUri]string first, [FromUri]string second)
{
//do something
}
文件时才会包含该文件。具体来说,我需要运行secp256k1_recovery.h
而不是./configure --enable-module-recovery
。