我正在尝试设置 poco 的 HTTPSClientSession 方法以在 https 链接上运行 API Get 请求。为此,我需要安装完整版的 POCO,包括 openSSL、Crypto 和 NetSSL_OPENSSL 组件。我按照 POCO 文档中的说明进行了如下操作。
克隆 openssl poco 存储库($ git clone https://github.com/pocoproject/openssl)...我在目录 [poco-base]/openssl
中设置了 openssl 安装运行 $ cmake -H/path/to/poco -B/path/to/poco-build $ cmake --build /path/to/poco-build
我做的一切都很好,我很确定我的代码是正确的,但是当我编译时我得到 PocoCryptod.lib 和 PocoNetSSLd.lib 文件丢失错误 - 链接器找不到它们。这是因为我从未将它们包含在我的 vs 项目中,因为 cmake 从未制作过它们。我追溯到那么远。
当我运行 cmake -H/path/to/poco -B/path/to/poco-build 时,出现以下错误: --Could not find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR(缺少:OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
我在哪里设置 OPENSSL_ROOT_DIR?我知道我需要一些特殊的东西来安装加密库和 NetSSL_OpenSSL 库,但我对那是什么感到困惑。
我在文件搜索中使用了 find,发现 OPENSSL_ROOT_DIR 在两个文件中
[Poco-Base]/cmake/UseEmbeddedopenSSl.cmake [Poco-Base]/cmake/v33/FindOpenSSL.cmake
我认为问题出在某个地方。我的倾向是它在 FindOpenSSL.cmake 文件中,但我很困惑,因为我不明白 set OPENSSL_ROOT_DIR 是如何写的。
这是它在文件中的样子:
``
# Hints
# ^^^^^
#
# Set ``OPENSSL_ROOT_DIR`` to the root directory of an OpenSSL installation.
# Set ``OPENSSL_USE_STATIC_LIBS`` to ``TRUE`` to look for static libraries.
# Set ``OPENSSL_MSVC_STATIC_RT`` set ``TRUE`` to choose the MT version of the lib.
if (WIN32)
# http://www.slproweb.com/products/Win32OpenSSL.html
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (32-
bit)_is1;Inno Setup: App Path]"
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\OpenSSL (64-
bit)_is1;Inno Setup: App Path]"
ENV OPENSSL_ROOT_DIR
)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _programfiles)
set(_OPENSSL_ROOT_PATHS
"${_programfiles}/OpenSSL"
"${_programfiles}/OpenSSL-Win32"
"${_programfiles}/OpenSSL-Win64"
"C:/OpenSSL/"
"C:/OpenSSL-Win32/"
"C:/OpenSSL-Win64/"
)
unset(_programfiles)
else ()
set(_OPENSSL_ROOT_HINTS
${OPENSSL_ROOT_DIR}
ENV OPENSSL_ROOT_DIR
)
endif ()
`
``
我想我需要在这里进行更改,但我很困惑。有帮助吗?
我终于明白了。转到 Windows 环境变量并创建一个新变量 OPENSSL_ROOT_DIR 到 [poco-unzipped-files-location]\openssl uild\win64 in\debug。同时将包含目录移动到此位置。缺少头文件的问题是我在之前的尝试中删除了它们。这对你来说应该不是问题。