NASA World Wind 由 NASA开发,类似 Google Earth 的地球模拟工具,它是开源软件,有C#,Java、Android和Web等多个版本,项目源码地址为:NASA WorldWind · GitHubhttps://github.com/NASAWorldWind
源代码下载:
目前C#版本已于2007年2月停止开发,最后版本为1.4.0 文件名为 World_Wind_1.4.0_Source.zip 下载地址:
NASA WorldWind download | SourceForge.nethttps://sourceforge.net/projects/nasa-exp/下载文件名: World_Wind_1.4.0_Source.zip
环境准备:
编译环境 VS2022 17.4.1 , 操作系统 Windows 11,首先安装 Microsoft DirectX SDK (June 2010) 这是DirectX SDK作为独立安装包的最后一个版本,后续的版本都集成到了Windows SDK里。下载地址:
Version: 9.29.1962.1 File Name: DXSDK_Jun10.exe
Date Published: 2/20/2021 File Size: 571.7 MB
项目准备:
解压源代码到D盘根目录,目录结构如下:
原来的项目是Visual Studio 2005(8.0.50727.42)创建的,有条件可以在Win7下用VS2005打开调试,本次使用VS2022打开WorldWind.sln ,提示需要进行升级,项目总共包含16个项目。
升级完成后,提示有四个错误,似乎是因为源代码中缺少一个png文件,影响不大,忽略即可。
ConfigurationWizard\Resources\Shadingimage.png: 未能将文件备份为 D:\World_Wind_1.4.0_Source\Backup\ConfigurationWizard\Resources\Shadingimage.png
ConfigurationWizard\Resources\shading.png: 未能将文件备份为 D:\World_Wind_1.4.0_Source\Backup\ConfigurationWizard\Resources\shading.png
ConfigurationWizard\Resources\sunset.png: 未能将文件备份为 D:\World_Wind_1.4.0_Source\Backup\ConfigurationWizard\Resources\sunset.png
ConfigurationWizard\Resources\sunfromspace.png: 未能将文件备份为 D:\World_Wind_1.4.0_Source\Backup\ConfigurationWizard\Resources\sunfromspace.png
WorldWind\Resources\gradient.png: 未能将文件备份为
D:\World_Wind_1.4.0_Source\Backup\WorldWind\Resources\gradient.png
解决方案的模式配置:
调试前将发布类型由Release改为Debug版本,平台改为X86,将启动项目由PluginSDK修改为WorldWind。
由于 vs2022不再支持.Net 2.0 以及 .net framework4.0 、 .net framework4.5、.net framework4.5.1、.net framework4.5.2目标包。项目升级到VS2022后,目标框架默认为.Net Framework 4.0 开发包,需要手工安装4.0开发框架。
安装.Net 2.0 和 .Net Framework 3.5
打开控制面板——程序——启用或关闭windows功能,启用 .Net Framework 3.5(包括 .Net 2.0 和3.0),确定即可。
安装.Net 4.0~4.5,使用VS2019的安装程序下载,也可从以下地址下载:(2条消息) 用于VS2022的dotnetframework4.0~4.5-C#文档类资源-CSDN文库https://download.csdn.net/download/eamon100/87176309?spm=1001.2014.3001.5501放到 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework 目录下解压即可。
此外在.NET 4.0 下使用 Dirext3D 托管库,调试、运行时无反应。查看程序集Microsoft.DirectX.dll、Microsoft.DirectX.Direct3D.dll、Microsoft.DirectX.Direct3DX,发现其.NET 运行时版本时v1.1.4322,也就是说D3D托管库是在 .NET v1.1 版本下编译生成的。 在.NET4.0之前的.NET2.0、dotNet 3.5 均兼容.NET1.0和1.1,但在升级到.NET4.0后,.NET的内核作了重大调整,以前在.Net2.0或.net3.5中生成的程序集,如果要在.net4.0下运行,需要在配置文件中指定此应用程序支持的公共语言运行时版本和启用 .NET Framework 2.0 运行时激活策略,这时 修改App.config的内容即可,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
</configuration>
为方便起见,将所有项目的运行库恢复为原来的dotNet 2.0版本。
编译错误处理:
1、提示PluginSDK的Angle.cs 和 ConfigurationLoader.cs 字符无效。
Angle.cs、ConfigurationLoader.cs文档编码为西欧 Windows-1252编码,其中0xB0字符,VS编辑器将其解析为简体中文(GB2312)时报错,该字符是° ,UTF-8编码是0xC2B0。
PlaceFinder.cs 有0xB7的字符,该字符是· 。
解决方法:用右键单击文件,用“带编码功能的C#编辑器”,使用西欧 Windows-1252编码方式打开,将其另存为UTF-8编码即可。项目中的cs文件均为西欧 Windows-1252编码,可以使用转换工具,将其转换为UTF-8编码文件。
2、提示 PluginSDK、JhuaplWorldWind 和WorldWind 必须添加对程序集“Microsoft.VisualC, Version=7.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用。
解决方法:对PluginSDK、JhuaplWorldWind和WorldWind项目分别添加VisualC的引用。
3、提示WorldWind项目文件Compass3D.cs 、GPSTracker.cs、MeasureTool.cs、GPSTrackerPlugin.WorldWind.cs、GPSTrackerPlugin.GeoFence.MsgBox.cs、WorldWind.cs 存在相同的字符编码问题。
解决方法:与1做同样的修改。
4、WorldWind项目动态库引用无效问题。
解决方法:将D:\World_Wind_1.4.0_Source\bin\Debug 目录下所有文件拷贝到 D:\World_Wind_1.4.0_Source\WorldWind\bin\x86\Debug 目录下。
5、生成解决方案成功,调试时报错。
解决方法:去掉引发此异常时中断的选项。
调试运行成功。
修改完的项目下载:
下一篇介绍系统的主要流程。