错误LNK2001:使用Shining Light Productions时出现无法解析的外部符号_H_get0_pqg

时间:2019-07-09 07:01:16

标签: c openssl

我正在使用Shining Light Productions!使用openssl!我正确配置了项目,并且可以编译我的代码。当我添加另一行代码时:

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;
}

0 个答案:

没有答案
相关问题