FlightGear–64位编译

血泪总结,供大家相互借鉴

一、环境准备
[FlightGear和SimGear版本要一致]
①FlightGear版本—2019.1.2
②SimGear版本-----2019.1.2
③fg-data版本-------2019.1.2
④下载三方库 3rdParty.x64(注意是64位的)
⑤编译过的OSG库
⑥下载cMake
链接:cMake下载
⑦c++boost库下载
链接:boost下载
(和要编译的FG目标版本一致,这是选择64位)
可自行编译OpenSceneGraph,也可以下载编译过的库
链接:源码下载链接

[需要osg和三方库的可在我上传的资源中下载]
二、构建文件夹
(为了保持和cMakeList一致,随意更改会导致编译错误)
文件夹如下
根目录----选择一个盘下新建FG-x64文件夹
文件夹下新建

install下新建OpenSceneGraph、SimGear、FlightGear三个文件夹
把自己编译的osg或者下载的编译后的include、lib、bin复制到OpenSceneGraph文件夹下
SimGear和FlightGear下各自新建include和lib文件夹(目前为空)

如果之前没有设置过OSG环境变量这里要设置一下
系统变量的path中添加 : FG\install\OpenSceneGraph\bin

三、开始编译工作
【1】编译SimGear
打开cmake并指定源代码路径和编译路径

点击 configure

报错,添加boost路径

继续 configure
CMAKE_INSTALL_PREFIX 是 VS2015⼯程输出⽬录
选择 FG\install\SimGear
继续 configure
把相关路径都设置完成之后,点击 Generate

可以 Open Project 对 Simgear 源码编译
注意必须先编译 Simgear 源码,之后才能进⾏ FlightGear 源码的⽣成与 编译




这个错误不知道如何解决,直接去掉这个⽂件,看上去缺少 header⽂件,因为是 test项⽬,直接从 ⼯程中去掉

再次生成install,到此SimGear编译完成

【2】编译 FlightGear
以上关于Flightgear的步骤其实跟 Simgear是⼀样的,使⽤VS2015编译也是 ⼀样的,如下设置
设置相关路径(关于osg的静态库都用上述环境里提到的编译过的或者下载的,否则多版本会引起版本不兼容导致编译失败)
报错!

这里是要指定上述编译的SimGear的路径
(install编译就是为了把生成的库复制到指定路径)

然后再configure还是有warning提示,这里可以搁置不管(只要不是camke error)
然后点击 生成


这样就生成成功了
然后打开vs的编译工作
①先Build

选择 release x64平台
生成后再 install
显示这个界面即编译成功!!!!!!!!!
但是会遇到一些编译问题,整理如下
1/ 常见的基本都是链接失败找不到路径,只需检查项目属性->VC++包含目录和库目录,已经链接器的输入是否含有相关的静态库 .lib
2/LINK : fatal error LNK1104: 无法打开文件“$<1:.obj”
解决方案:找到项目属性->链接器->输入->把1.obj删掉
3/C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: “cmd.exe”已退出,代码为 9009。
解决方案:这里是链接不成功或者编译的库版本不匹配,
4/G:\fg\env\flightgear-2019.1.2\src\Add-ons\AddonManager.cxx : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
c1xx : fatal error C1083: 无法打开源文件: “G:\fg\env\fg-build\src\Main\fgfs_autogen\mocs_compilation.cpp”: No such file or directory
解决方案:这里检查头文件是否包含
5/error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT_StaticRelease”不匹配值“MD_DynamicRelease”(mocs_compilation.obj 中)
----------引用的lib库的debug或release版本,与本工程的dubug或release版本不符合
解决方案:这里是因为编译的多线程库不匹配,一定要每一个环节包括simgear,编译的都统一才可以编过,一般vs默认md格式的多线程,
6/ error LNK2019: 无法解析的外部符号 __imp__alDopplerFactor,该符号在函数 “public: virtual void __thiscall SGSoundMgr::init(void)” (?init@SGSoundMgr@@UAEXXZ) 中被引用
解决方案:该错误是在“C++项目属性 ---- 链接器 ----- 输入 ---- 附加依赖项”中,没有输入第三方静态链接库的时候,报错的。需要指明的是,你有时候忘记输入某些lib,工程编译的时候不会报错,而会在链接的时候出错。
7/error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
工程-》设置属性-》配置属性-》常规-》项目默认值-》字符集
解决方案: 原来是Unicode (安装时的默认值)
改为使用多字符集
8/boost库之asio使用出错:
error LNK2001: 无法解析的外部符号 “class boost::system::error_category const & __cdecl boost::system::generic_category(void)” (?generic_category@system@boost@@YAAEBVerror_category@12@XZ)
error LNK2001: 无法解析的外部符号 “class boost::system::error_category const & __cdecl boost::system::system_category(void)” (?system_category@system@boost@@YAAEBVerror_category@12@XZ)
解决方案:
boost安装目录:D:/boost。
找到D:/boost/boost_1_73_0/include/boost-1_73/boost/system/error_code.hpp。
在error_code.hpp文件开头添加宏定义:#define BOOST_ERROR_CODE_HEADER_ONLY。

9/也是我认为比较严重的一个问题
LNK1104 无法打开文件“libboost_system-vc141-mt-gd-x64-1_68.lib”
解析:
一般情况下boost库是不需要编译的,但是报这种错误代表没有链接到你所对应的编译器版本的boost库,这时候两种解决方案
1是网上找别人编译好的boost下载
2是自己编译boost加入相关链接
这里推荐2方案(一次编,一直用)
给出boost编译过程如下
①下载对应环境搭建步骤里边的boost源码解压
(注意源码解压后的目录不能随便移动)
②打开vs的x86工具栏,cd到对应的boost目录,键入bootstrap.bat
③输入
(1)编译所有boost动态库 (release|debug),包括头文件和库文件
bjam --toolset=msvc-14.0 --stagedir=“编译路径” --without-python --build-type=complete link=shared threading=multi install
(2)只编译 release 版本 regex 动态库,包括头文件和库文件
bjam --toolset=msvc-9.0 --stagedir=“编译路径” --with-regex link=shared threading=multi variant=release runtime-link=shared install

(3)只编译 release 版本 regex 动态库,包括库文件

bjam --toolset=msvc-9.0
–stagedir=“编译路径”

–with-regex link=shared threading=multi variant=release runtime-link=shared stage
【注意】: Boost 源代码所在路径最好全英文,不要有空格、特殊字符、中文等
编译要花上30分钟左右(根据PC性能所定), 会在指定生成目录:
stage/install:
stage表示只生成库(dll和lib),install还会生成包含头文件的include目录。本人推荐使用stage,因为install生成的这个include目录实际就是boost安装包解压缩后的boost目录(D:\boost\boost_1_70_0,只比include目录多几个非hpp文件,都很小),所以可以直接使用,而且不同的IDE都可以使用同一套头文件,这样既节省编译时间,也节省硬盘空间。
用的时候把生成的文件夹下的.lib配置到工程即可解决问题
四、配置fgdata,运行起flightgear
找到编译flightgear下的目录,将osg130-osgDB.dll等相关osg的dll复制到fg.exe目录下,然后配置data路径
fgfs设置为启动项

然后调试fgfs,等待一下,你的小飞机就飞起来啦!!!!!


个人 qq:506006726

FlightGear--64位编译指南相关推荐

  1. 关于VS中区分debug与release,32位与64位编译的宏定义

    在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断 是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的goo ...

  2. windows 10下 opessl 64位编译

    说明 项目中先前运行程序全部是编译成32位版本进行发版,现进行改造改为64位版本进行发布.涉及到第三方依赖库全需对应编译出64位依赖库. 环境 Windows 10 编译器 vs 2010 (由于本机 ...

  3. VC2010添加64位编译模式

    本文借鉴了网上很多文章,仅用于个人备份. 工程->属性 Name起名字,随便起.然后选择从现有的Release配置中copy配置内容 有的可能还需要添加WIN64的宏定义 问题分析: 1. 注意 ...

  4. CATIA CAA 32位和64位编译

    CATIA CAA 32位和64位编译 CATIA 编译32位和64位程序,CATIA有32位和64位的区别,CAAheadRADE没有32位和64位的区别.编译不同版本的插件时,仅需修改环境变量,然 ...

  5. ubuntu12.10 64位编译Android4.1

    1.更新source.list源 gedit /etc/apt/source.list #网易的源(163源,无论是不是教育网,速度都很快) deb http://mirrors.163.com/ub ...

  6. linux boost 64位编译,Boost在Linux 64 下的编译

    1. 下载最新版的boost wget https://dl.bintray.com/boostorg/release/1.67.0/source/boost_1_67_0.tar.gz 2. 解压 ...

  7. VS系列编译器内部调用malab(32位/64位)函数指南

    最近项目用到绘制3D图形,使用了许多开源库没有得到理想的效果,后来想到可以使用matlab软件绘制图形通过MFC项目工程进行调用.   有了这个想法后,便在网上搜索相关的资料,实际调用matlab生成 ...

  8. 64位编译TrueCrypt

    下载的安装程序无法在windows7 64位下安装.先在xp下安装好后,再copy文件夹.创建系统变量后重启,然后再编译错误就没了. 指定MSVC16_ROOT环境变量即可,避免安装.https:// ...

  9. Qt c++5.15 mingw 64位编译 ---ricky.chu

    从 zxjohnson 的博客看到 : 从Qt5.15.0起,对于开源用户,Qt官方不再提供独立安装文件,且不再有bug修复版本(比如Qt5.15.1) 他的 vs2019 编译博客 https:// ...

  10. UBUNTU16 64位编译VLC-2.2.8/4 WIN32应用 遇到的问题及解决办法

    主要参考: https://blog.csdn.net/longji/article/details/52304590  vlc-2.2.4 交叉编译 UbuntuX64_1604_Desktop 编 ...

最新文章

  1. 目录文件和根目录文件夹
  2. day_02、基础数据类型
  3. nessus rpm 安装_CentOS8.0下查看已安装的软件位置
  4. 20145204 《Java程序设计》第6周学习总结
  5. Linux 文件和目录的属性
  6. c mysql 设置字符集_MYSQL字符集设置的方法详解(终端的字符集)
  7. 爬虫爬到的网页源代码不是真正的源代码_Python爬虫经常爬不到数据?你可以看一下这篇文章...
  8. AndroidStudio安卓原生开发_fragment与activity双向通信_3种方式---Android原生开发工作笔记118
  9. HDU1829【种类并查集】
  10. PHP文件系统-文件路径操作和权限
  11. 综述-自动驾驶中基于图像的3D目标检测
  12. sja1000 CAN控制器波特率计算方法详解
  13. MongoDB 后台创建索引、查看创建进度等
  14. android 创建前台服务,Android前台服务保活
  15. R | 可视化 | 热图(Heatmap)
  16. 有关1793年中英第一次正式接触的几本书
  17. 边缘计算系列之MEC介绍
  18. 读取用户的输入,直到输入quit时退出
  19. 正则表达式匹配豹子号和顺子号
  20. 中国教育之------------------记录中华美德-(持续更新)

热门文章

  1. Cocos2d-x 3.0 开发(七)在程序中处理cocoStudio导出动画
  2. 基于handsontable的web excel(上)
  3. python快速编程入门黑马程序员pdf_Python快速编程入门 传智播客 黑马程序员 python编程从入门到实践基础视频教程核心编程爬虫数据分析程序设计机器学习简明书籍...
  4. matlab用ezplot绘制参数方程,MATLAB学习1 之画图函数
  5. Java配置Path环境变量
  6. 从技术原理洞悉摄像头破解及防范
  7. 如何利用迅雷下载百度云?
  8. PHP的.htaccess作用
  9. Jupyter Notebook介绍
  10. 爬虫练习:南阳理工学院ACM题目信息