在开发过程中经常遇到的问题就是加入某第三方库的支持,这样的第三方库往往是属于无源码,而且可能是静态链接库lib或动态链接库dll甚至两者皆有。
1. 使用C++编译动态库及使用
参考文章
https://blog.csdn.net/lunweiwangxi3/article/details/87184775
注意事项:
(1)生成时,确认输出库对应的平台
版本 | 位数 |
---|---|
调试版 | Win86 |
发布版 | Win64 |
一共有四种组合方式。如果链入Unreal则版本一定选择发布版,至于平台多数选择Win64平台。否则,按上述参考文章配置即可。
(2)dumpbin查看动态库
如何查看Unreal自带第三方库中的函数?
2. Unreal 使用第三方库
在C++中使用第三方库是对项目属性进行配置,但是在Unreal中略有不同。
Unreal链入第三方库,主要是三个文件的安置:.h、.lib、*.dll 以及 *.build.cs脚本的编辑。
- 个人理解
*.dll是为了在编译过程中,让 *.h 找到 .lib(.cpp)。
Unreal的编译管理使用UBT(Unreal Build Tool),因此链接第三方库的工作主要是编写UBT脚本.build.cs。只要在Build.cs 中配置头文件路径及添加lib文件即可,以便Unreal的构建工具在编译期间包括所有必要的依赖项。
基本上以插件方式集成*是最推荐的集成第三方库的方式。
(1)在项目目录中创建存放第三方库的文件夹
- ThirdParty
- Include//拷贝第三方库的.h
-
Lib//拷贝第三方库的.lib
(2)编写脚本.build.cs
using System.IO;
public class ProjectName : ModuleRules
{
private string ThirdPartyPath
{
//从Binaries里面出发
get { return Path.GetFullPath(Path.Combine(ModuleDirectory, "../../ThirdParty ")); }
}
public bool LoadThirdPartyLib(ReadOnlyTargetRules Target)
{
isLibararySupported = true;
string ThirdPartyIncludePath = Path.Combine(ThirdPartyPath, "Include");
string ThirdPartyLibPath = Path.Combine(ThirdPartyPath, "Lib");
PublicIncludePaths.Add(ThirdPartyIncludePath );
PublicLibraryPaths.Add(ThirdPartyLibPath );
PublicAdditionalLibraries.Add("ThirdParty.lib");
}
return isLibararySupported;
}
public ProjectName(ReadOnlyTargetRules Target) : base(Target)
{
~~~
//源代码相同
~~~
LoadThirdPartyLib(Target);
}
}
(3).dll的去处
将.dll文件拷贝到Binaries \ Win64文件,即.exe所在的文件夹。
否则会出现错误
参考文章
http://www.52vr.com/thread-31270-1-1.html
https://blog.csdn.net/lunweiwangxi3/article/details/83187840