Win7+VS2015 x64环境下编译OSG3.4.1+OSGEarth2.10的OSGEarthQT方法及问题求助
在Windows 7 + VS2015 x64环境下编译osgEarthQt的解决方案(基于OSG3.4.1与osgEarth2.10)
我之前帮不少开发者解决过osgEarthQt的编译问题,结合你的环境配置,给你梳理一套可行的步骤,同时针对性解决你遇到的「无安装项目」「找不到Lib文件」的问题:
一、前置环境检查
在动手编译前,先确认这些依赖项是否准备到位:
- OSG3.4.1 x64编译完成:必须是x64版本,且已经生成了完整的Lib、DLL和头文件,记住它的编译输出路径(比如
D:\OSG3.4.1_x64)。 - osgEarth2.10源码下载完成:确保源码版本和OSG匹配(osgEarth2.10对OSG3.4.x兼容性很好),建议用2.10稳定版而非git最新分支。
- Qt5.x x64版本:Win7不支持Qt5.15及以上版本,推荐用Qt5.9.x(比如5.9.9)的MSVC2015 x64版本,安装时勾选MSVC2015 64-bit组件,同时在VS2015中安装Qt VS Tools插件方便后续配置。
二、用CMake配置osgEarthQt编译项目
直接用VS打开源码容易出现配置遗漏,推荐用CMake生成标准的VS2015项目:
- 打开CMake-GUI,设置:
- 「Where is the source code」:指向osgEarth2.10的根目录(比如
D:\osgearth-2.10) - 「Where to build the binaries」:新建一个空的x64构建目录(比如
D:\osgearth-2.10_build_x64)
- 「Where is the source code」:指向osgEarth2.10的根目录(比如
- 点击「Configure」,选择
Visual Studio 14 2015 Win64作为编译器,点击「Finish」开始配置。 - 配置过程中手动设置这些关键参数(若CMake提示缺失依赖):
OSG_DIR:指向OSG3.4.1的x64编译输出目录(比如D:\OSG3.4.1_x64)Qt5_DIR:指向Qt5.x的cmake配置目录(比如D:\Qt\5.9.9\msvc2015_64\lib\cmake\Qt5)- 勾选
OSGEARTH_BUILD_QT选项(这是编译osgEarthQt的核心开关,默认可能未勾选!) - 确认
OSGEARTH_USE_QT5被自动设为ON,且Qt的Core、Gui、Widgets模块都被正确识别(CMake会显示绿色对勾)
- 无错误后,点击「Generate」生成VS2015解决方案文件。
三、编译osgEarthQt项目
- 打开生成的
osgEarth.sln解决方案,在VS顶部选择Release x64或Debug x64配置(和你OSG的编译配置保持一致)。 - 先编译核心依赖模块:右键解决方案,选择「生成解决方案」,等待osgEarthCore、osgEarthUtil等模块编译完成。
- 单独编译osgEarthQt模块:在解决方案资源管理器中找到
osgEarthQt项目,右键选择「生成」。
四、解决你遇到的两个核心问题
1. 编译后未生成INSTALL项目
- 检查CMake配置中是否设置了
CMAKE_SKIP_INSTALL_RULES=ON,如果是,改成OFF,重新点击「Configure」→「Generate」即可生成INSTALL项目。 - 如果不想重新生成,也可以手动复制文件:
- 头文件:从osgEarth源码的
src/osgEarthQt目录复制所有.h文件到你的项目头文件目录。 - Lib/DLL文件:从构建目录的
lib/Release(或Debug)和bin/Release(或Debug)文件夹中复制osgEarthQt.lib和osgEarthQt.dll。
- 头文件:从osgEarth源码的
2. 找不到对应的Lib文件
- 首先确认CMake中是否勾选了
OSGEARTH_BUILD_QT:如果没勾选,osgEarthQt模块不会被编译,自然没有Lib文件,回到CMake步骤重新配置。 - 检查VS的编译配置是否为
x64:如果不小心选了Win32,Lib文件会生成在x86的输出目录里,切换到x64重新编译。 - 排查编译错误:如果编译过程中出现Qt头文件找不到、OSG库链接失败等错误,Lib文件不会生成:
- 确保Qt的
Qt5_DIR路径正确,或者在VS的项目属性中手动添加Qt的头文件和库路径。 - 确认OSG的
OSG_DIR指向的是x64版本的编译目录,且OSG的Lib文件存在。 - 确保osgEarth的核心模块(比如osgEarthCore)已经编译成功,osgEarthQt依赖这些模块。
- 确保Qt的
五、验证编译结果
创建一个简单的Qt测试项目:
- 在VS中新建Qt Widgets Application(x64配置)。
- 在项目属性中:
- 「VC++目录」→「包含目录」添加OSG的头文件目录、osgEarth的头文件目录、osgEarthQt的头文件目录。
- 「VC++目录」→「库目录」添加OSG的Lib目录、osgEarth的Lib目录、osgEarthQt的Lib目录。
- 「链接器」→「输入」添加
osgEarthQt.lib(Debug版加osgEarthQt_d.lib)以及OSG和osgEarth的其他依赖Lib。
- 在主窗口中添加
osgEarthQt::ViewerWidget控件,运行项目,如果能正常显示地球场景,说明编译成功。
内容的提问来源于stack exchange,提问作者Jin Chen
相关产品推荐
相关产品推荐

