繁体   English   中英

函数'BN_init'的隐式声明错误

[英]Implicit declaration of function 'BN_init' error

我正在检查如何从私人比特币地址生成公共密钥。
我找到以下页面:
如何从OpenSSL中的ECDSA私钥获取公钥?

但是,当我尝试使用gcc -Wall -Werror -O3 -o public_key public_key.c -lcrypto进行编译时,出现以下错误:

public_key.c: In function 'generate_pubic_key':
public_key.c:26:13: error: storage size of 'start' isn't known
      BIGNUM start;
             ^~~~~
public_key.c:32:6: error: implicit declaration of function 'BN_init' [-Werror=implicit-function-declaration]
      BN_init(&start);
      ^~~~~~~
public_key.c:26:13: error: unused variable 'start' [-Werror=unused-variable]
      BIGNUM start;
             ^~~~~
cc1: all warnings being treated as errors

我已经安装了OpenSSL,到目前为止还没有任何与它相关的编程错误。 有人可以指出我做错了什么吗?

您正在使用 不推荐 使用的 删除API。

根据BN_new(3)手册页:

删除功能void BN_init(BIGNUM *);

从OpenSSL 1.1.0开始,BN_init()不再可用。 它用于初始化现有的未初始化的BIGNUM。 通常,此操作如下:

  BIGNUM a; BN_init(&a); 

应用程序应将BN_init的使用替换为BN_new:

  BIGNUM *a; a = BN_new(); if(!a) /* Handle error */ ... BN_free(a); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM