VS2017 win10 x64 OSG365编译

        最近重新编译osg365,遇到了一些之前解决过现在又忘了怎么解决的问题,上网查资料整理后将编译全过程及遇到的问题记录在这里,方便下次再编译。

1 编译环境、代码、数据版本说明: 

编译器:VS2017

操作系统:win10 x64

cmake:3.26.3

源码:OpenSceneGraph-OpenSceneGraph-3.6.5.zip

OSG三方依赖库:3rdParty_VS2017_v141_x64_V11_full.7z 

数据包:OpenSceneGraph-Data-3.4.0.zip

源码、OSG三方依赖库、数据包官网均有下

2文件组织

       为了编译的顺利进行,将下载的文件组织如下: 

       在D盘建立一个OSG的文件夹,然后将下载好的文件如下放置: 

D:\OSG\OpenSceneGraph:源码解压后放于此  

D:\OSG\3rdParty:第三方依赖库解压后放于此 

D:\OSG\data:数据包解压后放于此 

D:\OSG\OpenSceneGraph文件夹下新建build

文件组织时要注意解压时的目录层级

3设置多处理器编译

此操作目的是采用多处理器编译缩短编译时间,修改后我的DELL G15笔记本可以在1个小时内完成编译。老点的电脑两小时应该也能编完。有两种方法:

第一种方法:

打开D:\OSG\OpenSceneGraph文件夹下的CMakeLists文件,将

找到以下内容 

 OPTION(WIN32_USE_MP "Set to ON to build OpenSceneGraph with the /MP option (Visual Studio 2005 and above)." OFF)

将括号中的OFF改为ON,改后如下

 OPTION(WIN32_USE_MP "Set to ON to build OpenSceneGraph with the /MP option (Visual Studio 2005 and above)." ON)

第二种方法,cmake中WIN32|WIN32_USE_MP勾选,如下图。

4 打开cmake,按下图设置路径,点击Configure

 ACTUAL_3RDPARTY_DIR设置为D:\OSG\3rdparty

勾选以下选项:

BUILD_MFC_EXAMPLE

BUILD_OSG_APPLICATIONS

BUILD_OSG_EXAMPLES

BUILD_OSG_PACKAGES

CMAKE_INSTALL_PREFIX设置为D:\OSG\OpenSceneGraph\build

注意有的选项,要点击Configure一次或多次后才出现,直到点击Configure后没有红色部分后,单击Generate生成解决方案。

5 打开D:\OSG\OpenSceneGraph\build文件夹中的解决方案OpenSceneGraph.sln修改Examples osgviewerMFC项目

将项目中的stdafx.h中的WINVER和_WIN32_WINNT后面的数字改为0x0A00(来自项目|属性|C/c++|预处理器|预处理器定义中_WIN32_WINNT的值),否则会出现afxwin.h文件中很多符号找不到。更改后如下

#ifndef WINVER                // Allow use of features specific to Windows XP or later.

#define WINVER 0x0A00        // Change this to the appropriate value to target other versions of Windows.

#endif



#ifndef _WIN32_WINNT        // Allow use of features specific to Windows XP or later.                   

#define _WIN32_WINNT 0x0A00    // Change this to the appropriate value to target other versions of Windows.

#endif 

6 生成

 右键单击解决方案OpenSceneGraph,选批生成,选中ALL_BUILD中的debug和release两个生成,完成后再选择INSTALL中的debug和release两个生成(不要重新生成)。

7 关于MFC

如出现编译osgviewerMFC找不到afxwin.h,原因是VS安装时没装MFC导致,正确安装后不会出现此问题。

8 环境变量设置

OSG_FILE_PATH: D:\OSG\data

OSG_LIBRARY_PATH: D:\OSG\OpenSceneGraph\build\bin\osgPlugins-3.6.5

Path:增加D:\OSG\OpenSceneGraph\build\bin,D:\OSG\3rdParty\bin

设置完成后,可在命令提示符cmd中输入osgversion,显示如下

在命令提示符cmd中输入osglogo,显示如下 

 在命令提示符cmd中输入osgviewer cow.osg,显示如下 

如以上显示都正确,说明编译配置正确。

9 新建工程

新建工程时选择空项目OsgX64DR

配置属性->C/C++->预处理器->预处理器定义添加”WIN32”

项目属性debug和release的vc++目录中的包含目录和库目录设置为C:\Program Files\OpenSceneGraph\include和C:\Program Files\OpenSceneGraph\lib(这两个路径与第4步cmake操作时“CMAKE_INSTALL_PREFIX”选项设置有关)

为项目增加源文件main.cpp,内容如下:

#include <osgViewer/Viewer>
#include <osgDB/ReadFile>


#ifdef _DEBUG
#pragma comment(lib,"osgd.lib")
#pragma comment(lib,"osgDBd.lib")
#pragma comment(lib,"osgViewerd.lib")
#pragma comment(lib,"OpenThreadsd.lib")
#pragma comment(lib,"osgGAd.lib")
#pragma comment(lib,"osgUtild.lib")
#pragma comment(lib, "osgTextd.lib")
#pragma comment(lib, "osgWidgetd.lib")
#else
#pragma comment(lib,"osg.lib")
#pragma comment(lib,"osgDB.lib")
#pragma comment(lib,"osgViewer.lib")
#pragma comment(lib,"OpenThreads.lib")
#pragma comment(lib,"osgGA.lib")
#pragma comment(lib,"osgUtil.lib")
#pragma comment(lib, "osgText.lib")
#pragma comment(lib, "osgWidget.lib")
#endif

int main(int argc, char **argv)
{
	osgViewer::Viewer viewer;
	viewer.setSceneData(osgDB::readNodeFile("cow.osg"));
	return viewer.run();
}

代码中的库,请根据需要增减。

编译运行后,显示为第8节中的牛。

10 将osgX64DR项目导出为项目模板,可方便后续新建工程使用。

11如果编译通过,运行时提示找不到“zlib.dll",或“zlibd.dll”可将

“3rdParty\bin”路径中的相应文件拷贝到

“C:\Windows\System32”路径

12权限问题

     在win11下vs2017中直接用“本地Windows调试器”运行程序,会因为权限问题无法打开数据文件,此时退出vs,再重新以管理员身份运行vs即可。

本文参考了

OSG学习:WIN10系统下OSG+VS2017编译及运行_路人甲JIA的博客-CSDN博客

编译osgViewerMFC出现错误啦!_UltimateLove的博客-CSDN博客

https://www.cnblogs.com/xingzhensun/p/6272360.html

在此表示感谢!

  • 30
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值