Unreal 导出dll 嵌入到程序 (嵌入Qt 程序)

  unreal 默认是 无法嵌入到程序中作为一个dll模块的。想嵌入,需要做一些修改调整。再上一篇文章说过这个主要修改步骤。

这里说第一方面: 

   unreal 导出 dll工程:

   1、通过ue editor 建立一个 ue工程。(UeSdk)

   2、调用vs 打开项目, 修改编译选项。 UeSdk.target.cs 文件 :

        public uesdkTarget(TargetInfo Target) : base(Target)
    {
        Type = TargetType.Game;

        ExtraModuleNames.AddRange( new string[] { "uesdk" } );

        bShouldCompileAsDLL = true;
        bUseStaticCRT = false;

    }

   这样可以编译目标为 dll。但是ue 这里是有问题的。这里虽然生成的目标是dll, 但是 实际是exe文件,只是名称变了。

   这里需要修改 unreal 的编译工具: UnrealBuildTool 

3、修改 UnrealBuildTool工程内容。这里不得不修改源码了。unreal 从软件工程上说,有不少问题。

   UEBuildModuleCpp.cs 1157:

            //CompileEnvironment.bIsBuildingDLL = !Target.ShouldCompileMonolithic();

            CompileEnvironment.bIsBuildingDLL = Target.Rules.bShouldCompileAsDLL ;


UeBuildTarget.cs 3893:

    //zsyddl dll
                    UEBuildBinaryType binaryType = Rules.bShouldCompileAsDLL ? UEBuildBinaryType.DynamicLinkLibrary : UEBuildBinaryType.Executable;
                    //UEBuildBinaryType binaryType = !ShouldCompileMonolithic() ? UEBuildBinaryType.DynamicLinkLibrary : UEBuildBinaryType.Executable;
    这样可以编译为真正的dll

   4、如此修改虽然可以编译为 dll 也可以被调用。但是都是一个独立的 dll,很大的哦。50M+ ;


  以上只是能编译为 dll,并链接了 Unreal主要的库。 想要从程序调用dll,还需要一些修改。

  比如启动 unreal 、 启动 unreal 循环、嵌入到我们的程序窗口重、支持多实例。 后面会将修改好的代码方一份到网盘。整个项目很大。只能将源代码打包放上去。

 

 

猜你喜欢

转载自blog.csdn.net/zsyddl2/article/details/80710098