将Embarcadero 10.1 Berlin与OpenSSL(C ++)结合使用

时间:2018-08-07 16:15:49

标签: openssl linker-errors c++builder

我正在努力使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:\ filepath此处引用的未解决的外部'_EVP_EncryptInit_ex'

我已经在线搜索了此问题的解决方案,并且针对该特定问题有很多建议的解决方案!但是,它们都不能解决我的问题,我不确定这是因为它们是不正确的解决方案,还是我没有正确执行它们。很难说,因为大多数对我来说都是新的。

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

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

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

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

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

我现在机智了。我要做的就是在Windows 10机器上使用带有C ++的Embarcadero 10.1和OpenSSL来开发64位应用程序。

任何帮助都将不胜感激。如果这最终是一个重复的问题,我深表歉意。在此先感谢所有人。

1 个答案:

答案 0 :(得分:0)

问题已解决-在另一个论坛上获得了另一个用户的帮助。

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

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

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