• UE4 JSBSim


     步骤:

      1.从JSBSim官网下载源码

      2.将JSBSim编译为静态库(lib,多线程DLL)

      3.ue4项目根目录建立文件件ThirdParty->JSBSim->include、lib文件夹

      

       4.将JSBSim源码中src文件件拷贝到include文件夹,将生成的lib静态库拷贝到lib文件夹

       5.在ue4项目的build.cs文件中定义  

    using UnrealBuildTool;
    using System.IO;
    
    public class FlightSimulator : ModuleRules
    {
        private string ModulePath
        {
            // get { return Path.GetDirectoryName(RulesCompiler.GetModuleFilename(this.GetType().Name)); }
            get { return ModuleDirectory; }
        }
    
        private string ThirdPartyPath
        {
            get { return Path.GetFullPath(Path.Combine(ModulePath, "../../ThirdParty/")); }
        }
        private string MyLibPath //第三方库MyTestLib的目录
        {
            get { return Path.GetFullPath(Path.Combine(ThirdPartyPath, "JSBSim")); }
        }
    
        
        public FlightSimulator(ReadOnlyTargetRules Target) : base(Target)
        {
            //PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
            PrivatePCHHeaderFile = "Public/FlightSimulator.h";
    
            PublicIncludePaths.AddRange(new string[] {
                "FlightSimulator/Public/Player",
                "FlightSimulator/Public/System",
                "FlightSimulator/Public/System/Radar",
                "FlightSimulator/Public/Weapon",
                "FlightSimulator/Public/Weapon/Missile",
                "FlightSimulator/Public/Effect",
                "FlightSimulator/Public/UI",
                "FlightSimulator/Public/AI",
                "FlightSimulator/Public/Sound",
                "FlightSimulator/Public/Online",
                "FlightSimulator/Public/Flight",
                "FlightSimulator/Public/Flight/Others",
                });
    
            PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EasyFM"});
    
            PrivateDependencyModuleNames.AddRange(new string[] { });
    
    
    
            // Uncomment if you are using Slate UI
            // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });
    
            // Uncomment if you are using online features
            // PrivateDependencyModuleNames.Add("OnlineSubsystem");
    
            // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
            LoadThirdPartyLib(Target);
    
        }
        public bool LoadThirdPartyLib(ReadOnlyTargetRules Target)
        {
            bool isLibrarySupported = false;
            if ((Target.Platform == UnrealTargetPlatform.Win64) || (Target.Platform == UnrealTargetPlatform.Win32))//平台判断
            {
                isLibrarySupported = true;
                System.Console.WriteLine("----- isLibrarySupported true");
                string LibrariesPath = Path.Combine(MyLibPath, "lib");
                PublicAdditionalLibraries.Add(Path.Combine(LibrariesPath, "JSBSim.lib"));//加载第三方静态库.lib
            }
    
            if (isLibrarySupported) //成功加载库的情况下,包含第三方库的头文件
            {
                // Include path
                System.Console.WriteLine("----- PublicIncludePaths.Add true");
                PublicIncludePaths.Add(Path.Combine(MyLibPath, "include"));
            }
            return isLibrarySupported;
        }
    
    }

      6.在需要使用的地方#include "../ThirdParty/JSBSim/include/FGFDMExec.h"

      7.JSBSim依旧会报错,不过不影响使用

      

       8.JSBSim生成静态库一定要是多线程DLL(/MD),否则会报错

      

  • 相关阅读:
    Windows下路由表分析
    VMware Workstation网络连接的三种模式
    VMware Workstation环境下的三种网络配置桥接,NAT和HOST-ONLY
    Binary Tree Right Side View
    Count Complete Tree Nodes
    Flatten Binary Tree to Linked List
    Valid Anagram
    SELINUX部分的权限规则问题鸟哥7.4&&7.5?????
    网络五层架构及各层使用的协议
    Linux的echo -n -e 两个参数的含义
  • 原文地址:https://www.cnblogs.com/LynnVon/p/14469099.html
Copyright © 2020-2023  润新知