XX.Build.cs 中添加win平台库导入以及openssl的引用

// 添加Windows系统库
if (Target.Platform == UnrealTargetPlatform.Win64)
{
    PublicSystemLibraries.AddRange(new string[] {
       "advapi32.lib",    // 事件日志和注册表API
       "crypt32.lib",     // 加密API
       "ws2_32.lib",      // Windows套接字
       "bcrypt.lib",      // BCrypt API
       "user32.lib",      // 用户界面API
       "kernel32.lib"     // 核心系统API
    });
}
PublicDependencyModuleNames.AddRange(
    new string[]
    {
       "Core","ImageWrapper","OpenSSL","WebSockets", "Json", "JsonUtilities","HTTP"
       // ... add other public dependencies that you statically link with here ...
    }
    );

关闭引擎,重新生成vs工程(推荐清理之前的C++生成代码目录Binaries/ Intermediate/ DerivedDataCache/),点击Generate Visual Studio project files ,等待完成重新打开工程。

然后解决宏定义冲突

这个错误是因为UE中的宏定义与OpenSSL中的定义冲突了。在UE中,UI被定义为一个命名空间(在ObjectMacros.h中),而OpenSSL的ossl_typ.h中定义了一个名为UI的结构体,导致了重定义错误。

#define UI UI_ST // 这有助于解决某些宏冲突
THIRD_PARTY_INCLUDES_START
#include <openssl/evp.h>
#include <openssl/hmac.h>
THIRD_PARTY_INCLUDES_END
#undef UI

这样就完成了openssl库的导入