注意:导入静态库需要做到2点:添加搜索路径,加载静态文件如.lib文件以及所需的DLL库。
.IM要求添加include和wrapper两个文件为搜索路径:如下图
而该SDK生成的静态库在上图的exports文件夹中(有些SDK需要安装该SDK的官方文档生成所需静态库,有些SDK是已经生成好的文件不需要此操作)下图是生成的SDK
现在SDK所需的静态库和文件都已经准备好了,开始添加到UE5工程中:
1.在工程中新建一个路径保存所需静态库(NetSdk是工程名称,在与他并列的路径添加ThirdParty/nimSDK/路径,我的项目里如图2中有两个文件夹分别是两个SDK,我们以IM文件夹中的静态库为例):
图1:
图2:
2.添加搜索路径和静态库导入,这个操作在上图2中的nimSDK.Build.cs文件中实现,该文件需要手动创建:
如上图:
1.添加所需头文件:
using UnrealBuildTool;
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;
2.添加所需要宏(否则编译报错)
// 添加需要设置的宏
PublicDefinitions.Add("WITH_MYTHIRDPARTYLIBRARY=1");
3.添加搜索路径
//添加包含路径(IM通讯)
PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "IM/include"));
PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "IM/wrapper"));
//音视频(这是另一个音视频sdk静态库所需)
PublicIncludePaths.Add(Path.Combine(ModuleDirectory, "NetTC/api"));
4.添加静态库
// 添加导入库或静态库(IM通讯)
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "IM/exports/lib", "nim_chatroom_cpp_wrapper.lib"));
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "IM/exports/lib", "nim_cpp_wrapper.lib"));
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "IM/exports/lib", "nim_qchat_cpp_wrapper.lib"));
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "IM/exports/lib", "nim_tools_cpp_wrapper.lib"));
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "IM/exports/lib", "nim_wrapper_util.lib"));
//音视频(另一个SDK所需)
PublicAdditionalLibraries.Add(Path.Combine(ModuleDirectory, "NetTC/libs/x64", "nertc_sdk.lib"));
5.复制DLL文件到工程(我只复制了一个DLL,其他所需的DLL都按照这个方式批量复制就行)
string DllPath = Path.Combine(ModuleDirectory, "IM/bin", "h_available.dll");
RuntimeDependencies.Add(Path.Combine("$(ProjectDir)/Binaries/Win64/h_available.dll"), DllPath);
PublicDelayLoadDLLs.Add("h_available.dll");
6.在项目工程的build.cs添加静态库模块
7.上述步骤已经成功导入了,附上一个工程路径图: