近日,博主在学习JSBSim中遇到了不少问题,有一些问题有前辈在教程中写的比较详细,有的问题在网上找不到解决方案,在这里我记录一下我学习JSBSim进行最简仿真的过程。
1、下载JSBSim(我下载的是V1.1.0版本比较老的)链接:https://github.com/JSBSim-Team/jsbsim/releases?page=2
2、打开压缩包,jsbsim-1.1.0目录下有一个JSBSim.sln的文件,利用VS2022打开。
弹出提醒,点击确定。
3、VS2022运行最简仿真
step1:点击菜单项目(P)点击属性(P)进入项目属性页;
step2:点击右上角配置管理器,选择活动Release和活动X64
step3:配置属性-调试-命令参数:添加--script=scripts\c1723.xml --outputlogfile=c1723.csv,点击应用
step4:点开C/C++ ->代码生成->运行库,选择多线程(/MT);
step5: 点击应用、确定,点击本地Windows调试,运行界面如下:
生成的c1723.csv文件
4、命令行运行
step1: 按Win+R,输cmd.exe,点击确定
step2:打开项目文件夹,在release文件夹下面有一个JSBSim.exe,记住所在路径,如我的路径为E:\jsbsim-1.1.0\jsbsim-1.1.0\Release\JSBSim.exe
step3:设置到项目路径
cd E:\jsbsim-1.1.0\jsbsim-1.1.0\Release
e:
step4:输入命令,程序运行
注意:如果不设置路径,可能出现:Coule not open file:Path"scripts/c1723.xml" File:Path "scripts/c1723.xml"could not be loaded问题
2023.4.19 更新:生成JSBSim静态库lib文件
在进行最简仿真是选择了更新平台工具集,但在生成静态库时会出现错误LNK2019无法解析的外部符号,在查阅资料和多种尝试无果后怀疑,升级了平台工具集导致的不匹配。
以下为生成lib并使用步骤:
step1:打开sln文件(最好是没有经过变动的刚解压缩的工程文件夹下),弹出提醒,两个都选择无升级。
打开工程属性显示如下:
step2:进入工程属性页,配置选(活动)Debug ,平台选(活动)X64,配置属性->常规->配置类型,选择静态库,lib.点击应用和确定,点击编译,编译成功弹出提示不用管,工程目录Debug文件夹下会生成一个JSBSim.lib文件。
step3:新建C++空项目文件,将aircraft、engine、src、system、scripts及JSBSim.lib文件复制到新建项目工程目录下。
step3:新建main.cpp,在解决方案-源文件-添加-新建项
一个实现代码如下:
#include <FGFDMExec.h>//包含头文件,该头文件在src文件夹中,已在包含目录中配置。、
#pragma comment(lib,"JSBSim.lib")//控制宏,代表链接该静态库
#pragma comment(lib,"ws2_32.lib")//这个库是网络相关的库,JSB使用了该库,如果不链接会出现error lnk2001 __impxxxx: 无法解析的外部符号错误
//如果在前文使用法1配置了链接器,则此处无需使用控制宏
int main()
{
JSBSim::FGFDMExec FDMExec;//实例化
FDMExec.SetEnginePath(SGPath(".\\engine"));//设置engine文件路径
FDMExec.SetAircraftPath(SGPath(".\\aircraft"));//设置aircraft文件路径
FDMExec.SetSystemsPath(SGPath(".\\systems"));//设置systems文件路径
FDMExec.LoadScript(SGPath(".\\scripts\\c1723.xml"));//设置要载入的script文件路径,本文使用经典的c1723作为测试
bool result = true;
while (result) result = FDMExec.Run();//运行
return 0;
}
step4:配置属性:配置和平台与step1保持一致即可,配置属性-包含目录,添加src文件夹所在路径
配置属性-联结器-输入-附加依赖项,输入ws2_32.lib和JSBSim.lib
点击应用-确定,运行调试,程序自动运行
参考文章:使用VS2015编译JSBSim_jsbsim编译_32768的博客-CSDN博客
和JSBSim应用教程VisualStudio VS2019_kolento233的博客-CSDN博客
及《Building_JSBSim_with_Visual_Cpp》