我正在尝试使用引擎附带的 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/