首页 > 解决方案 > 错误 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;
}

标签: copenssl

解决方案


推荐阅读