我很难将openssl添加到我的项目中。我已经下载了用于Windows的预编译安装程序,并且已经安装了库,但是找不到在我的项目中包含openssl的方法。
注意:我在Windows 7 x64上使用Visual Studio Expres 2012,但不限于该环境。
尽管问题/答案基于:
它适用于任何 OpenSSL版本(v.0.9。*,v1.0。*,v1.1。*,v3.0)和任何 VStudio版本(v2005 +)
OpenSSL构建也可在[GitHub]上获得:CristiFati / Prebuilt-Binaries-(主)Prebuilt-Binaries / OpenSSL
假设您已经在目录中安装了OpenSSL,例如:“ C:\ Program Files \ Openssl-Win32-1.0.1p .....”(或其他名称);我将其称为OPENSSL_INSTALL_DIR(因为它是一个环境变量)。因此,%OPENSSL_INSTALL_DIR%应该包含一堆dir和文件,这对我们来说无关紧要:
Dirs:
文件(由于它们的名称因版本而异,我将使用(Nix style var)占位符来引用它们;它们也可能位于bin subdir中):
其中LIBCRYPTO(#1。)和LIBSSL(#2。)的定义如下:
v1.0.2及更高版本
v1.1。*
v3.0
为了利用它,在您的VStudio项目中,您必须:
配置编译器([MS.Docs]:按字母顺序列出的编译器选项)
指示它:
在何处搜索包含(头(.h))文件。转到“项目属性-> C / C ++->常规->其他包含目录”,然后添加%OPENSSL_INSTALL_DIR%\ include(如果需要添加其他路径,请用分号(;)分隔)。现在,您可以在源代码中包含OpenSSL头文件。
请注意,由于“ %OPENSSL_INSTALL_DIR%\ include ”目录包含一个openssl子目录,并且该目录下是实际的头文件,因此您的#include子句必须如下所示:
#include <openssl/ssl.h>
当然,您可以将%OPENSSL_INSTALL_DIR%\ include \ openssl 目录添加到您的项目中,然后上面的include语句将是:
#include <ssl.h>
但建议使用前者(推荐)
配置链接器([MS.Docs]:链接器选项)
指示它:
在哪里搜索图书馆。您可以通过转到“项目属性->链接器->常规->其他库目录”并添加%OPENSSL_INSTALL_DIR%\ lib来完成此操作(同样,如果有多个路径,请用;分隔它们)
使用什么库。“ %OPENSSL_INSTALL_DIR%\ lib ”目录包含一堆.lib文件。其中,您(最有可能)仅需要$ {LIBCRYPTO} .lib和/或$ {LIBSSL} .lib。转到“项目属性->链接器->输入->其他依赖项”,然后将这2个库添加到现有库的旁边
现在,如果所有设置和源代码都正确,那么您应该有一个“可构建”项目。当您要运行项目输出时(另一个可执行文件所需的.exe或.dll,我在这里不讨论您使用静态 lib的可能性),该可执行文件将需要找到2 。我一开始提到的dll。对于这一点,你应该要么:
将它们复制到可执行文件所在的文件夹中([MS.Docs]:Dynamic-Link库搜索顺序)
将它们从%PATH% env var复制到其中一个文件夹中
将其目录添加到您的%PATH% var中。
一些安装程序可能会在您的“ %SystemRoot%\ System32 ”目录中复制2个.dll,在这种情况下,这将不再需要(我发现这种在系统目录中复制内容的做法很糟糕,如当前示例所示)多个版本可以提供相同的文件名,而安装的最后一个将覆盖所有其他文件)
重要说明:将项目定位为32位或64位(在VStudio IDE中将Platform设置为Win32或x64)时必须小心-必须与您的OpenSSL安装体系结构匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句