【问题标题】:Using Embarcadero 10.1 Berlin with OpenSSL (C++)使用带有 OpenSSL (C++) 的 Embarcadero 10.1 Berlin
【发布时间】:2019-01-14 19:27:08
【问题描述】:

我正在努力让 OpenSSL 和 Embarcadero 10.1 Berlin 发挥出色。

我有一个 C++ 项目(VCL 表单),它导入 OpenSSL 库,然后使用它们的功能(例如:openssl/evp.h)。

我对 Embarcadero IDE、C++ 以及 OpenSSL 还是很陌生。不是一个很好的组合,但这个设置是我需要使用的。

当我第一次开始进入这个 OpenSSL 兔子洞时,我的项目无法找到我的“#include”。在“项目选项”中闲逛之后,我设置了“include”路径以在我的 OpenSSL 安装中添加“include”文件夹,并设置“lib”路径以在我的 OpenSSL 安装中添加“lib”文件夹。

这解决了我无法找到文件的问题,但现在我遇到了链接器问题:

[ilink64 错误] 错误:从 C:\filepathhere 引用的无法解析的外部“_EVP_EncryptInit_ex”

我在网上搜索过这个问题的解决方案,对于这个特定问题有很多建议的解决方案!但是,它们都没有解决我的问题,我不确定这是因为它们是不正确的解决方案,还是我没有正确执行它们。很难说,因为其中大部分对我来说都是新的。

我的项目的目标平台设置为 Win64,所以我最初认为我链接的 OpenSSL 库可能是针对 Win32 的。我尝试将目标平台切换到 Win32,以及为 64 位安装单独的 OpenSSL,但这些解决方案都没有奏效。 (将目标平台切换到Win32时,错误变为[ilink32 Error]而不是[ilink64 Error]

然后我尝试通过以下建议的解决方案:

linker error with openssl (trying SH1 example)

How do I solve an unresolved external when using C++ Builder packages?

https://forums.embarcadero.com/thread.jspa?threadID=113166

Use OpenSSL in C++Builder

但是,他们都没有成功。更糟糕的是,列出的解决方案差异很大,以至于越来越难以知道我是否曾经偶然发现该解决方案(并且执行不当),现在只是在浪费时间寻找新的解决方案。

我也尝试在 OpenSSL 上使用 Embarcadero 的官方 wiki 页面,但安装步骤没有帮助。 http://docwiki.embarcadero.com/RADStudio/Berlin/en/OpenSSL

我现在已经无计可施了。我想要做的就是在 Windows 10 机器上使用 OpenSSL 和 Embarcadero 10.1,使用 C++,开发 64 位应用程序。

非常感谢任何和所有帮助。如果这最终成为一个重复的问题,我深表歉意。在此先感谢大家。

【问题讨论】:

    标签: openssl linker-errors c++builder


    【解决方案1】:

    问题已解决 - 从其他论坛上的其他用户那里获得了帮助。

    上述链接之一 (Use OpenSSL in C++Builder) 的答案涉及从 OpenSSL 的 .dll 文件构建库。这些库是使用 implib(用于 32 位)和 mkexp(用于 64 位)命令构建的。有关这些命令及其工作原理的更多详细信息,请参阅链接线程。

    我已将我的项目选项设置为指向这些创建的库文件(在我的情况下为 .a),但已被告知它们也需要添加到项目本身中。将它们添加到项目后,链接器错误已得到解决。

    希望这对以后可能遇到同样问题的其他人有所帮助。干杯。

    【讨论】:

      猜你喜欢
      • 2016-12-11
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多