STK版本:9.2.2
VC版本:vc15
开发环境:Visual Studio 2017
安装STK 9.2.2,查看帮助文档,确认随安装包还安装了CodeSamples(示例代码),包括C#(CSharp)、Java、HTML、Matlab、VB.NET、PowerPoint等语言,目录结构如下图:
其中以C#和Java语言的例子代码最多,分别都有二十多个例子,本文针对VC++探索。VC++代码实例在‘.\CodeSamples\CustomApplications\C++’目录下,包含两个例子:Events和Tutorial,如下图。
可以看出,STK 9.2.2版默认提供的解决方案是基于vs2005和vs2008的。
运行VS2017(其他版本的VS应该是类似的)打开示例解决方案(例如上图的那个Samples_VS2008.sln,提示:STK示例代码以及STK的所有项目工程都是基于MFC开发的,符合微软的COM组件规范,所以VS2017需要安装“用于x86和x64的Visual C++ MFC”),提示进行解决方案版本升级,按默认操作执行即可。
生成项目。。。
当然是报错!
错误提示(可能在你的主机上错误会有所不同):error MSB8036: 找不到 Windows SDK 版本8.1。请安装所需的版本的 Windows SDK 或者在项目属性页中或通过右键单击解决方案并选择“重定解决方案目标”来更改 SDK 版本。
按提示在解决方案上点击鼠标右键,选择‘重定解决方案目标’。
然后弹出以下窗口,保持默认值,直接点击‘确定’按钮,完成重定操作。
再次生成解决方案,其中生成“Tutorial”项目成功,生成“Events”项目失败。
生成“Tutorial”项目时有两个警告,可忽略,运行“Tutorial”项目,程序界面如下:
从界面判断,可以新建场景,可以对二维场景进行缩放。点击‘New Scenario’按钮,新建场景,结束后会弹出一个“New Scenario Created”的提示框,点击提示框的‘确定’按钮,程序界面如下:
其中三维窗口通过鼠标左右键的操作可以正常的旋转和缩放,二维窗口则先点击‘Zoom In’按钮,然后在窗口中通过按下鼠标左键拖动划出放大的区域,执行二维底图的放大,点击‘Zoom Out’按钮恢复之前的缩放效果。
另外,在三维窗口移动鼠标时,界面会提示当前鼠标位置的经纬高信息,在三维窗口中双击鼠标左键也能直接在三维窗口中提示经纬度信息。
OK!回头看看“Events”项目。
错误信息为:fatal error C1189: #error: MFC does not support WINVER less than 0x0501. Please change the definition of WINVER in your project properties or precompiled header.
在项目中搜索关键字‘WINVER’,定位到文件stdafx.h,发现示例代码定义的WINVER有点古老(0x0400),说明STK9产品编译出品的时间真的早(但这并不妨碍其产品的专业性和稳定性),如下图。
- stdafx.h(代码片段)
直接注释掉上面的代码行,由编译器自动根据当前系统的配置决定上述环境变量(配置),重新生成项目,OK!成功!(注:如果你是将代码从默认安装位置拷贝出来再行编译,则需要重新指定项目的外部包含目录(CppIncludes,这个目录下的文件非常重要,后续实践中会逐一解释)的相对路径,‘Tutorial’项目没有这个问题,说明两个示例项目的配置和功能还是有差异的)。
运行‘Events’项目,程序界面如下:
界面与‘Tutorial’项目类似都是基于对话框,只有三维窗口,功能更多,可以新建场景、向场景添加卫星、添加地面设施,可以进行仿真(动画演示),下方的编辑框还可以实时输出场景信息。
一番操作后界面如下: