【问题标题】:How to include OpenSSL in Visual Studio如何在 Visual Studio 中包含 OpenSSL
【发布时间】:2015-11-16 08:15:21
【问题描述】:

我很难将 openssl 添加到我的项目中。我已经下载了 Windows 的预编译安装程序,并且我已经安装了库,但是我找不到在我的项目中包含 openssl 的方法。

注意:我在 Windows 7 x64 上使用 Visual Studio Expres 2012,但不限于该环境。

【问题讨论】:

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


    【解决方案1】:

    简介



    假设您已经在 dir 中安装了 OpenSSL,例如:"C:\Program Files\Openssl-Win32-1.0.1p..... " (或任何其他名称);我将把它称为 OPENSSL_INSTALL_DIR(因为它是 Nix 风格的 env var)。所以,${OPENSSL_INSTALL_DIR} 应该包含一堆 dir 和文件,这对我们来说很重要:

    • 目录

      • 包括
    • 文件(因为它们的名称因版本而异,我将使用(再次,Nix 样式 var)占位符来引用它们;它们也可能位于bin 子目录):

      • ${LIBCRYPTO}.dll
      • ${LIBSSL}.dll


      其中 LIBCRYPTO (#1.) 和 LIBSSL (#2.) 定义如下:

      • v1.0.2 及更早版本

        1. libeay32
        2. ssleay32(也可以复制(或符号链接ed)到libssl32
      • v1.1.*

        1. libcrypto-1_*(-x64)
        2. libssl-1_*(-x64)
      • v3.0

        1. libcrypto-3*
        2. libssl-3*

    为了使用它,在您的 VStudio 项目中,您必须:

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

    • 在哪里搜索包含(头文件 (.h)) 文件。转到您的“Project Properties -> C/C++ -> General -> Additional Include Directories”并添加 ${OPENSSL_INSTALL_DIR}\include(如果您需要添加其他路径,请用分号 (;) 分隔它们。现在您可以在源代码中包含 OpenSSL 头文件。
      请注意,因为 "${OPENSSL_INSTALL_DIR}\include" dir 包含一个 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 em>(同样,如果有多个路径,用 ; 分隔它们)

    • 使用什么库。 "${OPENSSL_INSTALL_DIR}\lib" dir 包含一堆 .lib 文件。其中,您(很可能)只需要 ${LIBCRYPTO}.lib 和/或 ${LIBSSL}.lib。转到您的“项目属性 -> 链接器 -> 输入 -> 附加依赖项”并将这 2 个库添加到现有库旁边

    3.构建并运行

    现在,如果您的所有设置和源代码都正确,那么您应该有一个“可构建”的项目。当您想要运行您的项目输出(另一个可执行文件所需的 .exe.dll 时,我不在这里讨论您可能正在使用 static libs),可执行文件将需要找到我在开头提到的 2 个 .dlls .为此,您应该要么

    • 将他们的 dir 添加到您的 PATH env var(我认为这是最干净的)。示例(来自控制台):set PATH=%PATH%;${OPENSSL_INSTALL_DIR}

      • 对于正在运行的 VStudio 实例:

    • 将它们复制到可执行文件所在的文件夹中 ([MS.Docs]: Dynamic-Link Library Search Order)

    • 将它们复制到 %PATH% 的其中一个 dir 中。
      某些安装程序可能会复制 2 个 .dll在您的“%SystemRoot%\System32dir 中,在这种情况下将不再需要(我发现这种在系统 dir一个坏的,在我们当前的例子中,多个版本可以发送相同的文件名,最后安装的一个会覆盖所有其他的)

    重要提示:在将您的项目定位为 32bit64bit 时必须小心(将 Platform 设置为 VStudio IDE 中的 em>Win32 或 x64) - 必须与您的 OpenSSL 安装架构相匹配。

    【讨论】:

      【解决方案2】:

      自从最初提出这个问题以来,发生了很多变化。从那时起,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 Community 2019 测试。

      参考资料:

      vcpkg

      vcpkg Quick Start

      【讨论】:

        【解决方案3】:

        使用柯南。安装使用非常简单:

        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" ...
        

        【讨论】:

        • 使用 vcpkg 就像 yum for centos vcpkg install openssl-windows
        • (您需要按此顺序运行 2 个命令)vcpkg integrate install vcpkg install openssl-windows 第一个命令会自动将软件包安装到 VC2017/VC2019 的正确位置
        猜你喜欢
        • 1970-01-01
        • 2013-12-02
        • 1970-01-01
        • 2017-10-27
        • 2021-07-31
        • 2017-09-16
        • 1970-01-01
        相关资源
        最近更新 更多