c++ 编译添加dll_Windows下osg编译

  • 一、准备工作

    • 1.1 资料准备

    • 1.2 环境说明

  • 二、编译准备

    • 2.1 目录树

    • 2.2 ffmpeg插件编译问题处理

  • 三、cmake配置

  • 四、编译

  • 五、环境变量配置

  • 六、OSG项目

    • 6.1 创建并配置项目

    • 6.2 添加测试用例

    • 6.3 运行

一、准备工作

1.1 资料准备

  1. OSG稳定版源代码3.6.3版本: http://www.openscenegraph.org/index.php/download-section/stable-releases

  2. 第三方库,选择VS2017对应的版本: https://download.osgvisual.org/3rdParty_VS2017_v141_x64_V11_full.7z

  • 其他版本,可访问:https://www.osgvisual.org/wiki/Downloads#a3rdPartysmallpackageV11

OSG3.4的数据包OpenSceneGraph-Data-3.4.0.zip: http://www.openscenegraph.org/downloads/stable_releases/OpenSceneGraph-3.4.0/data/OpenSceneGraph-Data-3.4.0.zip

  • 其他版本,可访问:http://www.openscenegraph.org/index.php/download-section/31-data

CMake 编译工具(cmake 3.13.0-rc1): https://cmake.org/download/

1.2 环境说明

环境说明:Windows7 ,visual studio 2017

二、编译准备

2.1 目录树

创建目录树,如下:

  1. D盘建立一个OSG的文件夹,再新建四个子文件夹

  2. D:\OSG\OpenSceneGraph : 源码解压于此

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

  4. D:\OSG\data : 数据包解压于此

  5. D:\OSG\build : 准备存放编译后的库和头文件等

2.2 ffmpeg插件编译问题处理

为确保能够编译ffmpeg插件,参考以下修改:

D:\OSG\OpenSceneGraph\CMakeModules\FindFFmpeg.cmake136行附近,在SET(FFMPEG_FOUND "NO")之后添加SET(STDINT_OK TRUE),同时确保CMake界面中的FFMPEGFFMPEG_STDINT_INCLUDE_DIR为空。

6431847b4f63165fc876d350e4122545.png

三、cmake配置

  1. 打开CMAKE,运行CMake-gui.exe, 选择2017 Win64,填好源码路径和输出结果路径  

    06574d93bd72c985705d9604b2ade865.png

    0b336877f61d3b346aeeb62fc3d6f999.png

  2. 修改参数

  • 找到ACTUAL_3RDPARTY_DIR,将其值设置为D:/OSG/3rdParty

e67c17a5521b42fc7d1c5629e0784f61.png

  • 找到BUILD_OSG_EXAMPLES,值设置为ON

  • 找到CMAKE_INSTALL_PREFIX,值为第一步中的结果路径D:/OSG/build

  1. 点击config,进行配置。

  2. 点击Generate,结束。

四、编译

  1. 在路径 D:\OSG\build 中找到OpenSceneGraph.sln,双击 在VS2017中打开

  2. 生成--批生成--选择项目ALL_BUILDDebugRelease两个版本

505567f67f1f91477fee655dc4c064a4.png

完成后再对INSTALL也进行生成编译,记得取消上一步的ALL_BUILD勾选

e4943666762603386ee780ca98ab2e65.png

五、环境变量配置

  1. 添加系统变量, 变量名:OSG_FILE_PATH,变量值:D:\OSG\data

21c89892a5a3085223a18b0fd7641d90.png

  1. PATH变量中添加第四部结果目录中的bin路径:D:\OSG\build\bin

  2. 配置完成后,可以cmd在命令框中输入 osgversion 会出现版本信息

  3. 在命令框中输入 osglogo 或者 osgviewer cow.osg ,如果出现 “计算机丢失zlib.dll”问题,在第三方库文件夹下 D:\OSG\3rdParty\x64\bin 找到 zlib.dll 和 zlibd.dll 复制到 D:\OSG\build\bin 中

六、OSG项目

6.1 创建并配置项目

  1. VS2017下新建C++控制台程序

  2. 右键项目,选择“属性”,平台选择x64VC++目录中,包含目录添加 include路径:D:\OSG\build\include; 库目录添加lib路径:D:\OSG\build\lib

fcddeb951eb060fb8f7e289ba6835896.png

  1. 选择左侧C/C++中的“预处理器”,在预处理器中增加WIN32 

    71a304418e379d5bbdcb9385d853cdaf.png

  2. 选择左侧“链接器”中的“输入”,在附加依赖项添加

  • Debug项目添加如下:

.lib 
  • Release 版本添加如下:

.lib

02521eca8471902896110107fb86d62c.png

6.2 添加测试用例

顶部选择“x64”, 并输入以下测试代码:

#include "stdafx.h"

0bd81d167580909a616b0712dbf6f5a4.png

6.3 运行

6f8da5658f2b56e2fb068646783c40f5.png