zoukankan      html  css  js  c++  java
  • OSG静态编译 (转)

    搞了大半天,终于用静态编译的方式把OSG核心库、IVE插件和一个sample程序编译成功了,期间遇到一些问题,在此记录下来。

    1.OSG的CMake工程支持使用动态链接和静态链接两种方式编译OSG库, 所使用的两个开关是DYNAMIC_OPENSCENEGRAPH和DYNAMIC_OPENTHREADS,如下图:

    要想静态编译OSG库,首先需要确保这两个开关不被勾选。

    2.配置好CMake工程,生成VC工程后,需要对工程配置做一些手动修改。

    1)修改所有工程的配置类型(Configuration Type)为静态库(Static Library (.lib)),这一步CMake已经做了。

    2)修改所有工程的运行时库(Runtime Library)为MT或MTd。

    3)要想正确编译OSG静态库工程,必须在工程中加入两个预编译宏:OSG_LIBRARY_STATICOT_LIBRARY_STATIC,一般前者已经被自动添加了,而后者则需要手动添加。在工程配置的C/C++ ->Preprocessor中的Preprocessor Definitions中添加即可。(我就是一开始没有添加OT_LIBRARY_STATIC宏,导致一大堆关于OpenThreads库中对象的链接错误)

    3.可以直接编译OSG自带的静态库例子程序-osgstaticviewer,也可以自己写一个简单的osg程序编译,自己写程序时需要注意:

    如果使用窗口系统,需要添加USE_GRAPHICSWINDOW()宏。

    如果使用某个OSG插件,需要添加对应插件的USE_OSGPLUGIN(plugin name)

    一切搞定,就可以运行你的程序而不用担心一大堆的依赖库找不到了。而静态链接的exe文件,并没有想象中的大,因为它只包含了需要的程序,而不是简单的是所有lib文件的总和。

    另外,一个需要特别注意的问题是,如果使用静态编译的OSG库,需要首先保证所有插件依赖库(如zip、curl、freetype等)都是静态链接库。

     

    http://king8010.popo.blog.163.com/blog/static/1088321320106283568982/

  • 相关阅读:
    JavaScript 创建和浅析自定义对象
    JavaScript Object对象
    JavaScript String对象
    JavaScript Math和Number对象
    using kafkacat reset kafka offset
    windows 10 enterprize LTSC
    avro-1.8.1 serialize BigDecimal and Short error fix.
    Ubuntu Navicat for MySQL安装以及破解方案
    Kafka Connect Architecture
    python 读写配置文件
  • 原文地址:https://www.cnblogs.com/mazhenyu/p/2455860.html
Copyright © 2011-2022 走看看