如何在Visual Studio中包含OpenSSL

46qrfjad  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(173)

我很难将openssl添加到我的项目中,我已经下载了windows的预编译安装程序,并且安装了库,但是我找不到一种方法将openssl包含在我的项目中。
注意:我在Windows 7 x64上使用Visual Studio Expres 2012,但它不限于该环境。

gfttwv5a

gfttwv5a1#

简介

  • 尽管问题/答案基于:
    • 开放式SSL 1.0.1**
    • 虚拟工作室2012*

它适用于任何OpenSSL 版本(* 版本0.9.、* 版本1.0.、* 版本1.1.、* 版本3.0 *)和任何**VStudio 版本(* 版本2005 *+)

假设您已在如下 * 目录 * 中安装了 OpenSSL:* “C:\程序文件\Openssl-Win32-1.0.1p....."(或任何其他名称);我将把它称为 OPENSSL_INSTALL_DIR(因为它是一个 Nix style env**var)。因此,${OPENSSL_INSTALL_DIR}* 应该包含一堆 dir 和文件,其中对我们很重要:

    • 目录:
    • 包括 *
    • 自由 *

1.文件(由于它们的名称在不同版本中不同,我将使用(同样,Nix style var)占位符来引用它们;它们也可以位于bin**子目录 * 中):
1.
${LIBCRYPTO}.dll文件 *
1.${LIBSSL}.dll文件 *
其中,LIBCRYPTO
#1.)和LIBSSL*(#2.)的定义如下:
1.v1.0.2 及更低版本
1.libeay32
1.* ssleay 32 (也可以复制(或 * 符号链接 )到 * libssl 32
1.
版本1.1.

1.libcrypto-1_(-x64)*
1.libssl-1_(-x64)*
1.* 版本3.0 *
1.libcrypto-3*
1.libssl-3*
顺便提一下,在 Nix 上,这2个文件(.dlls -共享对象)通常命名为 *libcrypto.so.和 *libssl.so.(其中后缀是版本指示符)。
为了使用 OpenSSL 安装,在 VStudio 项目中,您必须:

1.配置编译器([MS.Docs]: Compiler Options Listed Alphabetically

指示它:

要搜索包含(头文件(.h))文件的位置*。请转到“* 项目属性-〉C/C++ -〉常规-〉其他包含目录 ”,然后添加**${OPENSSL_INSTALL_DIR}\include***(如果需要添加其他路径,请用分号(***;***))。现在您可以在源代码中包含 OpenSSL 头文件。

请注意,由于“${OPENSSL_INSTALL_DIR}\includedir 包含一个 openssl 子目录,而在该子目录下是实际的头文件,因此 #include 子句必须如下所示:

#include <openssl/ssl.h>

当然,您可以将 ${OPENSSL_INSTALL_DIR}\include\openssl**dir 添加到项目中,然后上面的include语句将是:

#include <ssl.h>

但前者是首选(推荐)

2.配置链接器([MS.Docs]: Linker Options

指示它:

在哪里搜索库。你可以通过进入你的“ 项目属性-〉链接器-〉常规-〉附加库目录 ”并添加**${OPENSSL_INSTALL_DIR}\lib***(同样,如果有多个路径,用分隔它们;
要使用的库。“${OPENSSL_INSTALL_DIR}\lib
dir 包含一组 .lib 文件。在这些文件中,您(很可能)只需要
${LIBCRYPTO}.lib
和/或**${LIBSSL}.lib***。转到“* 项目属性-〉链接器-〉输入-〉附加依赖项 *”,将这两个库添加到现有库旁边

3.构建并运行

现在,如果所有的设置和源代码都是正确的,那么您就应该拥有一个“可构建”的项目。(另一个可执行文件需要一个 .exe 或一个 .dll,我在这里不讨论您使用 static**lib 的可能性),可执行文件需要找到我在开头提到的2个 .dll。为此,您应该或者

  • 将它们的 dir 添加到您的 PATHenvvar我认为这是最干净的)。示例(从控制台):set PATH=%PATH%;${OPENSSL_INSTALL_DIR}
  • 对于正在运行的 VStudio 示例:

一些安装程序可能会复制“%SystemRoot%\System32dir 中的2 .dlls,在这种情况下,这将不再是必要的(我发现这种复制system dirs中的内容的做法是不好的,因为在我们当前的示例中,多个版本可以提供相同的文件名,最后安装的一个将覆盖所有其他的)

重要说明:在将项目定位为 * 032 bit * 或 * 064 bit *(在 VStudio IDE 中将 Platform 设置为 Win32x64)时必须小心-必须与您的 OpenSSL 安装架构相匹配(如果不匹配,请检查[SO]: Python Ctypes - loading dll throws OSError: [WinError 193] %1 is not a valid Win32 application (@CristiFati's answer)以了解(有趣的)错误)。

1szpjjfi

1szpjjfi2#

自从最初提出这个问题以来,已经发生了很多变化。从那时起,vcpkg沿着,使安装外部库变得容易多了。
若要安装和使用vcpkg,请使用下列程式码:

git clone  https://github.com/Microsoft/vcpkg
cd vcpkg
bootstrap-vcpkg.bat
vcpkg integrate install

最后一个命令是可选的,但建议用户范围的集成。
然后,要安装OpenSsl,请尝试以下操作:

vcpkg search ssl
vcpkg install openssl-windows --triplet x64-windows

您的选项可能因平台的具体情况而异。
重新启动Visual Studio,您应该可以开始了。
使用Visual Studio社区2019进行测试。
参考文献:
vcpkg
vcpkg Quick Start

myss37ts

myss37ts3#

使用柯南。它的安装和使用非常简单:
www.conan.io
您可以请求准备好使用的文件。例如,对于Linux x64或使用Visual Studio 2012...以下是示例说明:

conan install OpenSSL/1.0.2g@lasote/stable -s arch="x86_64" -s build_type="Debug" -s compiler="gcc" -s compiler.version="5.3" -s os="Linux" -o 386="False" -o no_asm="False" -o no_rsa="False" -o no_cast="False" -o no_hmac="False" -o no_sse2="False" -o no_zlib="False" ...

相关问题