【问题标题】:Can't fix unresolved external symbol _AES_encrypt even with lib files即使使用 lib 文件也无法修复未解析的外部符号 _AES_encrypt
【发布时间】:2018-05-02 09:23:55
【问题描述】:

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

我读过这个帖子:

我做了什么:

  1. here 下载了用于 VS2012 的 OpenSSL 预编译库。
  2. 将此地址添加到:

    常规 > 其他包含目录:openssl-1.1.0h\openssl-1.1.0f-vs2012\include

    链接器 > 其他包含目录:openssl-1.1.0h\openssl-1.1.0f-vs2012\lib

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

1>AES_Encryption 2.obj:错误 LNK2001:未解析的外部符号 _AES_set_encrypt_key 1>AES_Encryption 2.obj:错误 LNK2001:无法解析的外部符号 _AES_decrypt 1>AES_Encryption 2.obj:错误 LNK2001:未解析的外部符号 _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();

}

【问题讨论】:

  • 发布您的代码。并且链接到重复的问题而不解释是什么让你的情况有所不同不会给你答案,它只会让你的问题作为重复而结束。
  • @AndrewHenle 代码很简单,我在链接 openssl 时遇到问题,已添加代码。
  • 您需要将#pragma comment(lib, "libssl.lib") 或类似的东西(不确定actuel .lib 文件的名称)放入您的源文件中。
  • @MichaelWalz 谢谢先生,我添加了#pragma comment(lib, "libcryptoMD.lib") #pragma comment(lib, "libcryptoMDd.lib") #pragma comment(lib, "libcryptoMT.lib") #pragma comment(lib, "libcryptoMTd.lib") #pragma comment(lib, "libsslMD.lib") #pragma comment(lib, "libsslMDd.lib") #pragma comment(lib, "libsslMT.lib") #pragma comment(lib, "libsslMTd.lib"),它现在正在工作。如果可以的话,请写一个新的答案,我会标记它。

标签: c++ c visual-studio-2012 openssl


【解决方案1】:

您的 c 文件编译正常,但它没有正确链接,因为您没有指示链接器链接必要的 .lib 文件。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-26
    • 2018-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2018-11-22
    • 2013-07-23
    相关资源
    最近更新 更多