Я использую openssl Shining Light Productions !. Я правильно настроил свой проект, и мой код можно скомпилировать. когда я добавляю другой код строки:
H_get0_pqg(dh1,&p,&q,&g);
Не соблюдается и выдает ошибку:
1> ------ Начата сборка: Проект: dh, Конфигурация: Выпуск 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;
}