使用VS2015编译JSBSim

article/2025/10/5 8:07:18

1.说明

最近在研究JSBSim的代码,首先百度了一些JSBSim相关的文档和教程,有一篇《Building_JSBSim_with_Visual_Cpp_2010》讲了如何利用VS2010编译JSBSim,参考这个教程编译完成了一个JSBSim工程。但是这个工程是好多年以前的了,在GitHub上下载的最新JSBSim工程已经无法使用VS2010来编译了,所以就用VS2015将JSBSim最新的代码编译了一遍,其中配置内容和VS2010略有不同,所以记录下来,以便参考。

2.代码下载

JSBSim项目的代码下载地址如下:

Sourceforge下载地址:https://sourceforge.net/p/jsbsim/code/ci/master/tree/

GitHub下载地址:https://github.com/JSBSim-Team/jsbsim/tree/master

其中Sourceforge下载地址打开如下图,在右侧的JSBSim版本分支中有三个,分别是master、SG_Path和major_refactor,三个分支应该是不同时期的JSBSim版本,其中master应该是比较新的版本,下载后可以使用VS2015进行编译。

根据SourceForge上的消息,JSBSim在2018年5月份开始迁移到GitHub上了,所以目前JSBSim项目的维护应该是在GitHub上进行着,如果要接触最新的JSBSim代码,可以考虑在GitHub上关注这个项目。

 

3.编译成可执行文件

下载得到JSBSim工程包,解压后打开sln文件,最新的JSBSim工程中sln文件只能用VS2015以上的版本才能打开,打开后的界面如下:

目前这个解决方案中包含了三个工程,第一个项目aeromatic是生成飞行器配置xml文件的工具,第三个工程prep_plot是辅助画图的工具,在此我们重点关注JSBSim工程。

在JSBSim工程在编译前需要进行相应的配置,配置和测试步骤如下:

  • Step1.右击JSBSim工程,选择属性,打开工程属性页

  • Step2.点击配置管理器按钮,进入配置管理器页面,选择相应的活动平台解决方案。其中的x64解决方案平台是为了编译成64位应用程序而使用的,而x86应用程序是为了编译成32位应用程序而使用的。在此处我们选择x86平台,解决方案配置选择Release。

  • Step3.关闭配置管理器页面后,在配置属性->调试页面下的命令参数一栏输入“--script=scripts\c1723.xml --outputlogfile=c1723.csv”,这是为了方便调试所输入的命令参数。

  • Step4.在配置属性 -> C/C++ -> 代码生成 -> 运行库一栏,设置运行库为多线程(/MT),这样设置的目的是将VS2015的运行时库作为lib链接到应用程序中,程序可以在没有安装VS2015的环境中运行。

  • Step5.编译程序,右击工程选择生成或者按F7即可开始编译工程,等待几分钟应该就可以编译成功了。
  • Step6.在成功编译之后,我们可以在工程的Release目录下找到JSBSim.exe,接下来可以运行测试。可以通过VS2015来运行JSBSim.exe,结合之前设置的命令行参数,在菜单栏选择调试->开始执行(不调试)或者按Ctrl+F5即可运行;也可以在工程目录下输入命令行指令来执行。为了方便,我写了一个批处理脚本进行测试,脚本内容如下:
del -Q c1723.csvRelease\JSBSim --script=scripts\c1723.xml --outputlogfile=c1723.csvpause

执行效果如下图,同时在工程目录下会生成C1723.csv文件,该文件以表格的形式记录下了仿真过程中的所有数据,可以用来进行分析画图或者Replay。

 

4.编译成静态库

面向对象的强大之处在于代码重用很方便,但是我们没法每次都添加这么多的JSBSim源代码到我们自己的工程之中,所以考虑将JSBSim的代码编译成静态库来使用,这样每次只需添加JSBSim的静态库就可以复用其中已有的许多轮子了。编译配置过程如下:

  • Step1.打开JSBSim工程属性页,在此之前,我们应该已经在配置管理器中配置好了要编译的平台版本了,此处选择的编译平台是Release Win32。接着在常规->配置类型一栏,将编译目标从应用程序(.exe)改为静态库(.lib)。

  • Step2.接着切换到C/C++ -> 预处理器 -> 预处理器定义一栏,选择编辑,打开预处理器定义编辑页面,在最后一行输入XML_STATIC这是为了在工程中预先给出XML_STATIC的宏定义,从而将XML工具相关的API导出

  • Step3.在属性页的C/C++ -> 代码生成 –> 运行库一栏设置为多线程 (/MT)

  • Step4.在右侧工程目录栏中,找到JSBSim.cpp文件,右击选择移除,因为我们的静态库不需要使用main函数。
  • Step5.编译成功之后,就可以在工程目录下Release目录下找到编译完成的JSBSim.lib,这就是我们所得到的静态库,接下来对我们的静态库进行测试。
  • Step6.首先在VS2015中新建一个工程,将该工程设置为空项目,命名为JSBSimLibTest。由于VS2015在创建新项目时将.sln文件和. .vcxproj文件分开放了,我们将其移到同一目录下,并在sln解决方案中重新添加工程文件。
  • Step7.拷贝JSBSim工程目录下的src文件夹和JSBSim.cpp到JSBSimLibTest工程目录中,同时将我们之前编译好的JSBSim.lib拷贝到src目录中。虽然我们已经不需要JSBSim的源代码了,但是头文件还是需要的。而JSBSim.cpp则是我们用来对静态库进行测试的调用代码,看其能否实现在原工程中同样的功能。
  • Step8.在JSBSimLibTest工程上右击->添加->现有项,打开文件选择窗口,选择JSBSim.cpp文件。此时可以在IDE中看到添加后的文件提示了许多错误,这是因为我们还没有配置头文件包含目录以及依赖库的关系。
  • Step9.打开属性配置页面,然后打开配置管理器,配置要编译的工程目标为Release,平台选择Win32,这是为了和我们之前编译静态库时的配置相统一,以免编译出错。
  • Step10.在工程属性页 -> C/C++ -> 常规 -> 附加包含目录一栏,点击编辑,打开附加包含目录编辑页面,输入两个附加包含目录,分别是“$(ProjectDir)src”和“$(ProjectDir)src\simgear\xml”,这样编译时工程就能够找到相应的头文件了。

 

  • Step11.在工程属性页 -> C/C++ -> 代码生成 –> 运行库一栏,设置运行库和静态库一样的多线程 (/MT)
  • Step12.在工程属性页 -> 链接器 -> 附加库目录一栏,添加一个附加库目录“$(ProjectDir)src”,接着在工程属性页->链接器->输入->附加依赖项一栏添加一个附加依赖库“JSBSim.lib”,这样我们就将之前编译得到的JSBSim.lib添加到我们的工程中了。
  • Step13.编译JSBSimLibTest工程,编译成功之后我们就得到了一个JSBSimLibTest.exe可执行文件,这个文件应该是可以实现和JSBSim.exe相同的功能的,可以运行测试一下,测试成功就说明我们编译的静态库是可用的。

 

5.总结

这篇使用说明是参考《Building_JSBSim_with_Visual_Cpp_2010》写的,目的是作为简要的参考,在编译和执行JSBSim的过程中也遇到的一些问题,在此进行简要说明。

  • 编译平台选择x64x86的区别

VS2015可以选择将应用程序编译成x64位目标机程序和x86 32位应用程序,之前没有尝试过x64位应用程序的编译,相比于32位应用程序,64位程序应该在性能上有所提升,但是32位程序同样可以在64位的机器上运行,相对来说兼容性更好一些,可以按需选择。

  • Debug/Release模式的区别

Debug模式相对于Release模式在编译时减少了很多优化选项,这样做牺牲了一部分的性能换来的调试的方便,在之前测试JSBSim.exe运行时,Release编译得到的应用程序运行明显更快,显然优化是很有效果的。要发布应用程序时还是选Release好了。

  • 运行时库MT/MD

在之前的项目中就遇到过相关的问题,具体内容可以自行百度,可以参考《你所不知道的C和C++运行库》,本文在编译时选择MT,主要是为了减小应用程序对VS2015的依赖,可以在其他环境中独立运行。

  • 静态库添加到低版本工程中

之前干过这样的事,将VS2010编译的静态库或者动态库在VC6.0的工程中使用,还是可以用的。同样将VS2015编译的静态库给VS2010或者VC6.0应该也是可以用的,可以尝试一下。

  • JSBSim的用处和使用方法

面向对象的代码是可以复用的,我们有了JSBSim.lib和相关的头文件,那么就可以在自己的工程中复用相关的代码了。不过JSBSim中的各个轮子还有待研究,如果以后有需要,就可以利用其中的代码实现自己的功能了。

参考文章:

[1]Building_JSBSim_with_Visual_Cpp_2010.pdf(下载地址1)(下载地址2)

[2]你所不知道的C和C++运行库

 


http://chatgpt.dhexx.cn/article/ERyfnb7U.shtml

相关文章

C++学习 | VS2015下配置FFTW3库的方法,亲测实用

笔者是C的初学者,也是VS2015的初学者,最近的编程内容涉及到了傅里叶变换,于是查阅了很多资料,得知有FFTW这个十分强大的库,下面从下载到安装详细介绍。 一、FFTW简介 FFTW ( the Faster Fourier Transform in the W…

vs2015环境配置android,Visual Studio 2015环境搭建教程

当微软发布了Visual Studio 2015 Preview支持了wp,ios,android三大系统手机开发,相信也有不少朋友想迫不及待的使用这款Visual Studio 2015,下面小编就为大家介绍一下。 Visual Studio 2015环境搭建教程 1、安装之前先要看看自己的…

OpenCV+VS2015的详细配置(小白教程)

OpenCVVS2015的详细配置(小白教程) 一:下载安装OpenCV和VS2015配置环境变量VS2015中配置OpenCV 一:下载安装OpenCV和VS2015 1.下载OpenCV 进入OpenCV官网,下载自己想要版本。这里注意:OpenCV3.0是一个分界…

vs2015中用python编写程序

转载请注明出处:https://mp.csdn.net/postedit/81508867 python功能强大,但是没有专门的编写器,为了避免安装过多软件。在vs2015上配置使用,vs2015安装时直接选中python插件。本文配置中所用电脑型号是win7|64位,参考文…

VS2015镜像安装教程

为了更好地支持 Win10 程序的开发,微软发布了 VS2015。VS2015 支持开发人员编写跨平台的应用程序,从 Windows 到 Mac、Linux、甚至是编写 iOS 和 Android 代码! VS2015 共有三个版本,分别是: 社区版(Commu…

VS2015编译使用Boost库遇到的问题及正确编译使用教程

目录 背景: 一、VS2015Boost1.79.0时出现的问题情况 1、前言 2、问题发现 3、排查找原因 二、VS2015Boost1.69.0正确编译使用 1、执行bat文件 2、运行exe文件,编译lib库 3、VS2015包含库使用 背景: 本机电脑window10上已经安装过VS2…

VS2015 tfs的使用教程

本人文章陆续转向本人微信公账号发布 公众号:搬砖码农SmallNNN,期望您要是搬砖码农,一起学习探讨。 由于最新新换了工作环境,点击打开链接,看了这个文章的人大家都知道, 上家用的是git,这个有的教程了&am…

vs2015使用教程

一、启动 visual studio 2015 稍等片刻,你就会看到这个界面: 点击菜单:”文件”-“新建”-“项目”,会出现这个窗口: 选择左侧的”Visual C”下面的“win32”之后,选择右侧的”win32控制台应用程序”&#…

【VSCode常用插件】Path Autocomplete(@路径提示的插件)

前言❤️ 在路上,见识世界;在途中,认清自己 ❤️ 【VSCode常用插件】Path Autocomplete(路径提示的插件) 一、安装教程二、设置教程(1)在vscode设置打开 settings.json(2&#xff09…

vscode最常用插件

常用插件: 如果喜欢中文就安装中文,如果不喜欢就自动忽略. 1、chinese 2、Open-In-Browser 这个是必须安装的 打开浏览器看效果使用的 快捷键是altb 3、Prettier Prettier 是目前 Web 开发中最受欢迎的代码格式化程序。安装了这个插件,它…

vscode常用插件 - Path Autocomplete

1. Path Autocomplete 作用: 在vscode中使用提示路劲配置 打开vscode设置 搜索 settings.json 添加以下代码 // 导入文件时是否携带文件的拓展名"path-autocomplete.extensionOnImport": true,// 配置的路径提示"path-autocomplete.pathMappings": {"…

VSCode 常用插件推荐

VS Code提供了非常丰富的插件功能,根据你的需要,安装对应的插件可以大大提高开发效率。 完成前端开发,常见插件介绍: 目录 1、Chinese (Simplified) Language Pack 2、Code Spell Checker 3、HTML CSS Support 4、JavaScrip…

前端VSCode常用插件安装和使用

本篇文章先介绍下常见的插件~~~~ VSCode常用的插件 vscode之所以被称为宇宙第一神器,其中丰富的插件功不可没,安装起来超级简单,给我们开发带来了极大的便捷。 注意,新手学习期间,不建议安装形形色色的插件&#xff…

VSCode常用插件和快捷键总结

码字不易,转载请附原链,搬砖繁忙回复不及时见谅。 快捷键 切换打开的项目窗口:Ctrl W打开最近的项目:Ctrl R切换打开的文件:Ctrl 数字键 / Ctrl tab左右切换打开的文件:Command alt 左/右format格式…

VSCode 工具常用插件

1、Debugger for Chrome 方便运行代码,浏览器打开 2、 GitLens — Git supercharged 鼠标放到代码行上可以显示,改行的上一次修改记录 3、Git History git log 4、 Auto Close Tag 自动完成闭合标签 5、 Auto Rename Tag 修改了前面的开始标签&#…

Vscode常用插件及设置(前端版,实时更新ing

1.open in borwser: 写完代码后鼠标右击将代码在浏览器中运行 2.Chinese 汉化Vscode 3.vscode-icons html、css、js、less图标显示 4.Live Server 代码块写完后使用Live Server,每次修改代码CtrlS后浏览器无需再刷新即可跟着变化, 与…

VSCode常用插件汇总

这篇博客主要是我使用vscode过程中的插件汇总,使用了这么长时间,总想有个总结,也方便日后查看,这里我将我使用的插件分为基础、框架、工具三个类型。 官网地址 VSCode插件官网地址,里面有很多的插件可以使用。 基础插…

【整理总结】VSCode常用插件和好用配置(小白必看)

本篇文章给大家总结分享一些VSCode常用插件和好用配置(超详细),希望可以给刚入坑前端的小伙伴一些帮助。本文很长,如果能认真看完,你一定会有所收获。 一、VSCode常用插件推荐 工欲善其事,必先利其器。本文介绍一些前端…

VScode 常用必备插件

Visual Studio Code(简称“VS Code”)在前端开发的过程中必不可少,vscode作为代码编辑器,开源、免费、颜值高。更关键的是,丰富的插件,能够提高开发效率,你值得拥有。我们团队中大部分人都在用&…

【vscode】vscode常用插件介绍

1、Angular Snippets(angular片段) 这个扩展为 TypeScript 和 HTML 添加了 Angular 的代码片段。 2、Auto Close Tag(自动闭合标签) 自动添加 HTML/XML 关闭标记。 3、Auto Rename Tag(自动重命名标签) 自…