即使使用 lib 文件也无法修复未解析的外部符号 _AES_encrypt

Can't fix unresolved external symbol _AES_encrypt even with lib files

我需要使用 openssl 库进行加密。

我读了这篇文章 :

我做了什么:

  1. 已从 here 下载适用于 VS2012 的 OpenSSL 预编译库。
  2. 在 :

    添加了这个地址

    General > Additional Include Directories : openssl-1.1.0h\openssl-1.1.0f-vs2012\include

    Linker > Additional Include Directories : openssl-1.1.0h\openssl-1.1.0f-vs2012\lib

  3. 我使用了 openssl 的默认示例,但出现此错误:

1>AES_Encryption 2.obj : error LNK2001: unresolved external symbol _AES_set_encrypt_key 1>AES_Encryption 2.obj : error LNK2001: unresolved external symbol _AES_decrypt 1>AES_Encryption 2.obj : error LNK2001: unresolved external symbol _AES_encrypt 1>AES_Encryption 2.obj : error LNK2001: unresolved external symbol _AES_set_decrypt_key

我做错了什么?

编辑:这是我的简单代码:

#include <fstream>
#include <iostream>
#include <stdio.h>
#include <string>
#include <openssl/aes.h>

void main()
{
unsigned char inbuffer[1024];
unsigned char encryptedbuffer[1024];
unsigned char outbuffer[1024];

unsigned char oneKey[] = "abc";
AES_KEY key; 

AES_set_encrypt_key(oneKey,128,&key); /// error LNK2001: unresolved external symbol _AES_set_encrypt_key
getchar();

}

你的 c 文件 编译 很好,但它 link 不正确,因为你没有指示 link使用必要的 .lib 文件 link。

您需要将 #pragma comment(lib, "libssl.lib") 或类似的东西(不确定 actuel .lib 文件的名称)放入您的源文件中。