【发布时间】:2018-05-02 09:23:55
【问题描述】:
我需要使用 openssl 库进行加密。
我读过这个帖子:
- Openssl aes.h [Linker error] undefined reference to
- https://msdn.microsoft.com/en-us/library/799kze2z.aspx?f=255&MSPPError=-2147217396
我做了什么:
- 从here 下载了用于 VS2012 的 OpenSSL 预编译库。
-
将此地址添加到:
常规 > 其他包含目录:openssl-1.1.0h\openssl-1.1.0f-vs2012\include
链接器 > 其他包含目录:openssl-1.1.0h\openssl-1.1.0f-vs2012\lib
我使用了默认的 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