美文网首页
Unreal 第三方库

Unreal 第三方库

作者: Mr_约科 | 来源:发表于2019-10-10 10:45 被阅读0次

在开发过程中经常遇到的问题就是加入某第三方库的支持,这样的第三方库往往是属于无源码,而且可能是静态链接库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


      ThirdParty.png

(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所在的文件夹。

.dll去处.png

否则会出现错误

.dll错误提示.png

参考文章
http://www.52vr.com/thread-31270-1-1.html
https://blog.csdn.net/lunweiwangxi3/article/details/83187840

相关文章

网友评论

      本文标题:Unreal 第三方库

      本文链接:https://www.haomeiwen.com/subject/nymmpctx.html