美文网首页
MissionPlanner编译

MissionPlanner编译

作者: 沫简影 | 来源:发表于2020-11-19 17:49 被阅读0次

C#的小白,查阅网上资料也是不怎么全,特此记录;

【参考文档】

  1. 官方文档 https://ardupilot.org/dev/docs/building-mission-planner.html#building-mission-planner
  2. MissionPlanner编译与修改方法 http://www.nufeichuiyun.com/?p=76
  3. 采用 Visual Studio 编译 Mission Planner 方法与问题总结https://blog.csdn.net/hailiannanhai/article/details/78171546

源码下载地址:https://github.com/ArduPilot/MissionPlanner

Mission Planner上位机软件:http://firmware.ardupilot.org/Tools/MissionPlanner/MissionPlanner-latest.msi

编译环境:win10 + visual studio 2019

vs安装需要的库

  • “ASP.NET and web development”
  • “Universal Windows Platform developement”
  • “Mobile development with .NET”
  • “.NET Core cross-platofrm developement”
  • “.NET desktop development”

1、预先安装最新的Mission Planner软件,需用到一些依赖的动态库

2、“文件” -> “打开” -> “项目/解决方案” ,选择刚下载的文件夹下的“MissionPlanner.sln”

3、右键点击 Mission Planner工程(注意前面有C#图标的工程),点击【属性】、选择【引用路径】、将已经安装的Mission Planner路径填进去,点击添加文件夹;


clipboard.png

点击上图中的【生成事件】,移除所有“预先生成事件命令行“和”后期生成事件命令行“的内容;点击上图中的【生成】,将配置改为”Active(Debug)”

4、删除项目中 的 <ProjectReference Include="..\mono\mcs\class\System.Windows.Forms\System.Windows.Forms-net_4_x.csproj" Condition="'$(TargetFramework)' == 'netstandard2.0'" />

5、删除MissionPlanner\ExtLibs\AltitudeAngelWings.csproj中<TargetFrameworks>net461;netcoreapp3.1;netstandard2.0</TargetFrameworks>的netstandard2.0因为很多命名空间中不存在对应的类型;

同理还有以下项目中的netstandard2.0

  • BSE.Windows.Forms.csproj
  • BaseClasses.csproj
  • GMap.Net.WindowsForms.csproj
  • OSDConfigurator.csproj
  • ZedGraph.csproj
  • MissionPlanner.Controls.csproj

6、如果遇到命名空间 system.windows 中不存在类型或命名空间名称 forms (是否缺少程序集引用 )”错误,则右键项目 --->添加-->程序集引用


clipboard1.png
clipboard2.png

执行以上操作后,清理项目再重新生成,如果还有错,则点击错误提示进入对应的cs文件,等几秒后错误就消失了(具体原因未知)

7、删除Updater项目的生成后执行命令行,以解决签名错误的问题;

搜狗截图20201119144440.png

8、解决错误:vs使用简体中文(gb2312)编码加载文件;解决方案:UTF-8编码打开文件

参考https://blog.csdn.net/qq_42974800/article/details/94590512

9、解决错误: 非字符串资源要求在运行时使用 System.Resources.Extensions 程序集,但未在此项目的引用中找到它。

工具-》Nuget包管理工具-》管理解决方案的Nuget程序包,在已安装里搜索System.Resources.Extensions,

如果已安装,则更新MissionPlanner.Controls的依赖版本;

没安装的话,打开程序包管理控制台输入:

Install-Package System.Resources.Extensions -Version 4.6.0

进行安装,再同上更新版本;

clipboard3.png

此处更新一下,需要用4.6.0的版本,不然后续运行会报错 A Major error has occured: 未能加载文件或程序集“System.Resources.Extensions Version=4.0.0.0”(虽然也不是很确定是不是这个的问题,不过折腾很久,最后这里的版本改了就好了。。。)
具体错误如下:


搜狗截图20201124112058.png

10、配置安卓SDK

点击错误提示自动下载更新sdk28(安卓9.0),安装完毕后,进入UsbSerialForAndroid项目,右键,属性,更改目标框架为Android 9.0;

clipboard4.png

11、解决错误:ConcurrentDictionary<int, uavcan.uavcan_protocol_NodeStatus>”未包含“Remove”的定义,并且找不到可接受第一个“ConcurrentDictionary<int, uavcan.uavcan_protocol_NodeStatus>”类型参数的可访问扩展方法“Remove”(是否缺少 using 指令或程序集引用?) UAVCANFlasher
点击对应的错误说明,进入文件后做如下修改:

uavcan.uavcan_protocol_NodeStatus value;
can.NodeList.TryRemove(lastseenDateTime.Key, out value);
// can.NodeList.Remove(lastseenDateTime.Key)

相关文章

  • MissionPlanner编译

    C#的小白,查阅网上资料也是不怎么全,特此记录; 【参考文档】 官方文档 https://ardupilot.or...

  • missionplanner编译修改方法

    1.下载工具,下载visual studio2019 community 进入安装界面,安装界面选择以下安装内容:...

  • dtb文件编译

    反编译 编译 批量反编译

  • 编译过程与静态库&动态库

    一、编译过程 1、预编译(Preprocessing) 预编译即预处理,编译器不能直接对预编译命令进行编译,必须在...

  • 宏、const、static、extern使用详解

    宏与const的区别 编译时刻:宏是预编译(编译之前处理),const是编译阶段。编译检查:宏不做检查,不会报编译...

  • iOS const 与宏

    编译时刻:宏是预编译(编译之前处理),const是编译阶段。 编译检查:宏不做检查,不会报编译错误,只是替换,co...

  • 2020-09-09 RK系统编译

    编译uboot: 编译kernel: 环境配置: 编译系统:

  • 程序编译过程

    本文编译的文件cpu架构为X86_64。 编译型语言编译过程主要有预编译、编译、汇编、链接。 预编译This st...

  • 自己动手编译OpenJDK

    Linux下 编译 Centos 下编译OpenJDK Mac下编译 MacOS 下编译OpenJDK Windo...

  • 宏 const static extern的区别与使用

    一. const 与 宏的区别 编译时刻: 宏是预编译(编译之前处理), const是编译阶段处理 编译检查: 宏...

网友评论

      本文标题:MissionPlanner编译

      本文链接:https://www.haomeiwen.com/subject/sryliktx.html