c++ - 在虚幻引擎 4.25 中使用 OpenSSL

标签 c++ openssl unreal-engine4 sha256

我正在尝试使用引擎附带的 OpenSSL 库。

我使用的是4.25

在我的搜索中,我看到有人说将 OpenSSl 作为依赖项添加到我的项目的构建文件中。

我看到有几行不同的行添加到构建文件中,每一行都会导致错误 - 通常是关于函数不在当前上下文中的错误。

AddEngineThirdPartyPrivateStaticDependencies(目标,“OpenSSL”);

就是一个例子 - 我相信我读过一些可以尝试的地方

ExtraModuleNames.AddRange( new string[] { “OpenSSL”} ); - 但 OpenSSL 不是一个 C++ 模块。 还有另一个函数我忘记了,但是当我尝试它时,我再次收到关于不在上下文中的错误。

到目前为止,只需将文件夹“E:\UE_4.25\Engine\Source\ThirdParty\OpenSSL\1.1.1\Include\Win64\VS2015”添加到 Visual Studio c/c++ 目录包含列表中即可常规的“#include“openssl/sha.h”。-但是当我编译它时,它失败说该文件不存在。但我可以右键单击代码中的包含并查看它,以及智能感知识别类和函数。

在解决方案资源管理器中,我可以在 UE4\Source\ThirdParty\openssl 下看到 openssl 文件夹 - 但没有显示任何不同的 openssl 版本,也没有任何源代码文件。

事实上,所有第三方库都只包含一个或多个构建文件,或者带有 .tps 扩展名的文件。

我的最终目标是访问 sha-256 来生成一个哈希值,用于将本地自定义 map 与服务器拷贝进行比较 - 假设是如果哈希值不同,则服务器拷贝是较新的版本,然后会被下载。

所以我的最终问题是如何使用 Unreal 包含的 OpenSSL 库。

最佳答案

我的问题是我一直尝试在目标文件中执行操作,而不是构建文件 - 正如 Strom 上面的评论中所提到的。

要在虚幻的 C++ 项目中启用 OpenSSL(我使用的是 Visual Studio):

打开您的项目构建文件。

将 OpenSSL 添加到 PublicDependencyModuleNames:

using UnrealBuildTool;

public class MyProject : ModuleRules
{
    public MyProject(ReadOnlyTargetRules Target) : base(Target)
    {
         PublicDependencyModuleNames.AddRange(new string[] {
        "PhysicsCore",
        "OpenSSL"
        });
    }
}

关闭您的解决方案,右键单击您的虚幻项目 .uproject 文件并选择“生成项目文件”。

在您想要使用 openSSL 的地方,将其添加到代码文件顶部的包含部分或头文件中。 (在我的例子中,我使用的是 evp,正如文档中针对 sha256 所说的那样)。

#define UI UI_ST
THIRD_PARTY_INCLUDES_START
#include "openssl/evp.h"
THIRD_PARTY_INCLUDES_END
#undef UI

关于c++ - 在虚幻引擎 4.25 中使用 OpenSSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74155956/

相关文章:

c++ - 将类中的函数存储在数组中并调用它们 C++

java - AES 加密与 openssl 使用 java 解密

encryption - 使用 OpenSSL 进行 Tar 和加密,并将结果直接转储到 ssh 服务器

c++ - Unreal 未完全链接

c++ - 具有连续结果的夹角

c++ - 在 CUDA 内核中调用 operator new

c++ - cmake 将外部库与 IMPORT_SONAME ro IMPORT_LOCATION 链接

c# - DLL out int 不被接受

makefile - 在Windows上编译OpenSSL MinGw-make [1] : *** [Makefile:2800: crypto/dso/dso_win32.o] Error 1

python - Intellisense 不适用于 Visual Studio Code 中的 Unreal