我正在尝试使用引擎附带的OpenSSL库。
我正在使用4.25
在我的搜索中,我看到有人说要将OpenSSl作为依赖项添加到我的项目构建文件中。
我看到有几行不同的代码要添加到构建文件中,每一行都会导致错误——通常是关于函数不在当前上下文中。
AddEngineThirdPartyPrivateStaticDependencies(目标,"OpenSSL"(;
是一个例子-我相信我读过一些在哪里可以尝试
ExtraModuleNames.AddRange(新字符串[]{"OpenSSL"}(;-但是OpenSSL并不是一个c++模块。还有一个函数我忘了,但当我尝试它时,我又犯了一个错误,那就是不在上下文中。
到目前为止,只有将文件夹"E:\UE_4.25\Engine\Source\ThirdParty\OpenSSL\1.1.1\Include\Win64\VS2015"添加到visual studio c/c++目录的includes列表中,我才能做一个常规的"包括"openssl/sha.h"。-但当我编译它时,它失败了,说文件不存在。然而,我可以右键单击代码中的include并查看它,以及intellisense识别类和函数。
在解决方案资源管理器中,我可以看到UE4\Source\ThirdParty\openssl下的openssl文件夹,但没有显示任何不同的openssl版本,也没有显示任何源代码文件。
事实上,所有ThirdParty库都只包含一个或多个构建文件,或者扩展名为.tps的文件。
我的最终目标是访问sha-256,生成一个哈希,用于将本地自定义地图与服务器副本进行比较——假设如果哈希不同,则服务器副本是一个新版本,然后下载。
因此,我的终极问题是如何使用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的地方,请在代码文件的顶部添加includes部分或头文件。(在我的例子中,我使用的是evp,正如文档中对sha256所说的那样(。
#define UI UI_ST
THIRD_PARTY_INCLUDES_START
#include "openssl/evp.h"
THIRD_PARTY_INCLUDES_END
#undef UI