c - 错误 LNK2001:使用 Shining Light Productions 时无法解析外部符号 _H_get0_pqg
问题描述
我正在使用Shining Light Productions的 openssl !我正确配置了我的项目,并且可以编译我的代码。当我添加另一行代码时:
H_get0_pqg(dh1,&p,&q,&g);
它没有被遵守并显示一些错误:
1>----- 构建开始:项目:dh,配置:Release Win32 ------ 1> 创建库 F:\Using_OpenSSL\Release\dh.lib 和对象 F:\Using_OpenSSL\Release\dh。 exp 1>dh.obj : 错误 LNK2001: 无法解析的外部符号 _H_get0_pqg 1>F:\Using_OpenSSL\Release\dh.exe : 致命错误 LNK1120: 1 无法解析的外部 ========= 构建:0 成功,1失败,0 最新,0 跳过 ==========
我尝试了一些方法,例如添加新的lib文件,但都失败了。
错误 LNK2001:未解析的外部符号 _H_get0_pqg
我的程序中的所有代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<openssl\dh.h>
#include<openssl\applink.c>
int main()
{
DH *dh1, *dh2;
dh1 = DH_new();
dh2 = DH_new();
int ret;
ret = DH_generate_parameters_ex(dh1, 128, DH_GENERATOR_2, NULL);
printf("generating DH param success!...\n");
DHparams_print_fp(stdout, dh1);
if (ret != 1)
{
printf("generating DH param failed!\n");
goto lab1;
}
int err_code;
ret = DH_check(dh1, &err_code);
if (ret != 1)
{
if (err_code & DH_CHECK_P_NOT_PRIME)
printf("p is not prime!\n");
if (err_code & DH_CHECK_P_NOT_SAFE_PRIME)
printf("p is not safe prime!\n");
if (err_code & DH_UNABLE_TO_CHECK_GENERATOR)
printf("is not checking generator's value!\n");
if (err_code & DH_NOT_SUITABLE_GENERATOR)
printf("is not generator!\n");
goto lab1;
}
printf("DH param checking...\n");
int param_len;
param_len = DH_size(dh1);
printf("DH param size(byte) %d\n", param_len);
printf("DH param size(bit) %d\n", DH_bits(dh1));
ret = DH_generate_key(dh1);
if (ret != 1)
{
printf("DH_generate_key error!\n");
goto lab1;
}
DHparams_print_fp(stdout, dh1);
BIGNUM *p = BN_new();
BIGNUM *q = BN_new();
BIGNUM *g = BN_new();
H_get0_pqg(dh1,&p,&q,&g);
DHparams_print_fp(stdout, dh2);
BN_free(p);
BN_free(q);
BN_free(g);
lab1:
DH_free(dh1);
DH_free(dh2);
return 0;
}
解决方案
推荐阅读
- algorithm - 二叉树父级与顺序优先输出相同
- html - 如何获得背景颜色以填充整个页面并淡入顶部带有 svg 的图片?
- ios - “帮助修复”错误:无法从文件中读取属性列表:info.plist
- reactjs - 试图从外部反应组件触发谷歌地图标记上的点击事件
- javascript - this.props.match.params 授权后传入子组件
- c++ - What Is a Proper and Elegant Way to Overload Constructors in C++
- ios - Apple in-app subscription : how to detect if the subscription is auto renewing?
- vue.js - 如何在使用电子开发的应用程序的生产模式中引用其他 html 文件加载?
- visual-studio - How do I set some project references to CopyLocal = false based on metadata?
- sql - UPDATE 与两个 INNER JOINS 给出错误“无法绑定多部分标识符”