如何只为两个函数编译openssl

时间:2011-10-26 10:56:22

标签: c++ encryption openssl

我正在尝试使用openssl编码一个简单的字符串,不需要解密它。 我正在使用这些功能

AES_set_encrypt_key()
AES_cfb128_encrypt()

我需要我认为只包括:

 #include <openssl/aes.h>

我无法在网络或openssl网站上找到有关如何编译visual studio项目源代码的说明。有谁知道应该怎么做? 我可以只编译与这两个函数相关的代码吗?

非常感谢

1 个答案:

答案 0 :(得分:4)

我知道您希望在代码中使用这些功能。您不需要为此编译OpenSSL。

在开发计算机上安装软件包(如果是针对Windows开发,则可以获取最新的安装程序here)。它将包含您需要包含在代码中的头文件(它们将在c:\OpenSSL-Win32\include\openssl中),您需要链接应用程序的静态库(在c:\OpenSSL-Win32\lib\VC中)和应用程序需要运行的DLL(在c:\OpenSSL-Win32\bin)。

因此,在您的代码中,您将拥有:

#include <openssl/aes.h>
...
AES_set_encrypt_key(...);
...
AES_cfb128_encrypt(...);
...

您的编译器需要知道您包含的标头的路径(openssl目录的路径),因此您需要提供它。如果您使用的是Visual Studio,请打开项目设置并将c:\OpenSSL-Win32\include添加到其他包含目录。

在“链接器”部分中,将ssleay32MDd.lib;libeay32MDd.lib;添加到其他依赖项,以便链接器知道要查找的OpenSSL库。这些库的路径 - c:\OpenSSL-Win32\lib\VC - 添加到其他库目录。

小心这些库:它们需要与应用程序相同的运行时库链接。它们的后缀告诉你它们链接到哪个运行时库:我上面提到的库有后缀MDd,这意味着它们使用多线程调试DLL(/ MDd) - 所以如果你的应用程序使用相同的运行时你将包含它们(在Code中检查它)生成 - &gt;运行时库设置)。

您的应用程序现在将构建,但要运行它,您的二进制文件将需要依赖它来访问OpenSSL DLL libeay32.dll。将该DLL复制到系统目录或您正在运行应用程序的目录,或将路径c:\OpenSSL-Win32\bin添加到Path环境变量。