zoukankan      html  css  js  c++  java
  • Ossimplanet编译笔记(VS2008)(转载)

    Ossimplanet编译笔记(VS2008)(转载)

    已有 1143 次阅读  2011-11-22 14:08   标签Ossimplanet  Ossim 
    1. 准备工作
    下载OSSIM、OSSIMPlanet源代码、依赖库、QT。
    Osgeo服务器上有太多优秀的GIS\RS开源工程:
    http://download.osgeo.org/
    进入OSSIM项目下载相关源码和依赖库。
    1.1源代码:
    http://download.osgeo.org/ossim/src/
    (ossim-1.8.4.tgz 10-Mar-2010 05:58 59M)
    源代码也可以用svn下载最新的:
    https://svn.osgeo.org/ossim/trunk/
    1.2依赖库:
    http://download.osgeo.org/ossim/dependencies/windows_vcexpress2008/
    (ossim_dependencies.zip 22-Jul-2009 13:03 1.3G )
    注意:1.3G的依赖库是最全的。Installers目录下有个114M的依赖库是运行依赖库,对于编译来说不够全。
    Ossim目录下还有大量的参考文档和示例数据及演示视频。
    1.3 QT:
    Qt libraries 4.6 for Windows (VS 2008, 194 MB)。 http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.1-vs2008.exe
    直接安装就行,无需编译QT。
    Qt插件(for VS2008, 43.5M)。
    http://get.qt.nokia.com/vsaddin/qt-vs-addin-1.1.4.exe
    2. 编译
    2.1 工程
    用VS2008打开项目解决方案:D:\ossim\ossim\projects\vs\solution.sln
    目前的版本一共46个项目。可以逐一浏览各个工程,大体知道每个工程的作用。
    注意:很多Generated目录下的文件不存在是正常的,这些文件是Qt编译器编译后才能生成的。
    2.2 编译环境设置
    设置windows环境变量:
    QT_HOME=C:\Qt\4.6.1
    OSSIM_DEPENDENCIES=D:\ossim\ossim_dependencies
    当然,系统设置环境变量不是必须的,可以直接设置VC++ Directories,include files:
    D:\ossim\ossim_dependencies\include
    C:\Qt\4.6.1\include
    D:\ossim\ossim_qt4\include
    D:\ossim\ossim\include
    上述include对应的lib设置到library files中。
    2.3 编译
    上述步骤完成后,对于ossim-1.8.4版本,基本可以编译成功41个项目。对于SVN签出的版本,可能问题比较多。需要手动把几个文件添加到工程中。根据编译器提示进行。比如在编译ossim库的时候,link错误,说是ossimQuickbirdNitfTileSource中虚函数无法实例化,仔细看看,发现实现文件ossimQuickbirdNitfTileSource.cpp没有在工程中。手动添加即可。这样的问题有几处。
    2.4 Qt相关工程编译
    对于Qt工程ossimQt,需要手动修改编译设置,因为qt生成的.h文件需要用qt的编译器编译。而我们安装的qt路径和版本各不相同,所以需要更新。
    右键ossimQtAboutDialogBase.h文件,custom Build Step:
    Command line:
    C:\Qt\4.6.1\bin\moc.exe 改成自己QT安装目录。同样,Additional Dependencies改为Qt按照目录。
    小技巧:ossimQt工程中一共有几十个.h文件,如果一个个手动更改太费事,用记事本打开:
    D:\ossim-1.8.4\ossim-1.8.4\ossim_qt4\src\ossimQt.vcproj
    把文件中的c:\Dev\Qt\2009.03\qt替换成自己QT安装目录即可。
    于是编译Qt的问题解决。
    其他几个问题基本都是link的时候找不到lib的问题,有些是lib有前后依赖关系,把这些lib的目录放到工程依赖目录下即可解决。
    3. 我在编译中遇到的其他问题
    注意:以下这些问题不一定每个人都能遇到。
    3.1 error C2471:
    cannot update program database ' \debug\vc90.pdb'
    pdb更新错误,是vc2008的经典bug。把debug信息设置为z7兼容ok。
    3.2 找不到头文件xrefwrap
    找不到xrefwrap等头文件。请安装VS2008的sp1。其实问题3.1,3.2在安装sp1后都消失了。
    3.3 找不到各种lib
    第一次编译,找不到gpstk.lib、freetype239.lib等库,发现是下载的114M的版本而不是1.3G的版本。
    注意:在解压压缩文件的时候,有时会提醒有重复文件,直接全否就行。因为解压时间较长,不要以为出现这个提示时已经解压完成。
    4. 调试与运行
    确保所有编译生成的dll在同一个输出目录(release和debug目录分开)。
    把依赖库中的所有dll拷贝到同一个目录。
    把Qt安装文件夹中的dll拷贝到同一个目录。
    5. 补充说明:
    刚才在OSGeo.org的开发者社区Ossim-developer版面上有人提问为什么没有生成ossimplanet.exe,估计国内开发者也会有人有这样的疑问,看来有必要补充一下。
    在编译的文件中没有ossimplanet.exe。这是因为D:\ossim\ossimPlanetQt这个里面的工程不在上述的.sln里面。找到D:\ossim\ossimPlanetQt\ossimPlanetQt.pro文件。这是Qt的工程。在安装了qt插件的vs2008里面,可以直接打开qt工程。由于有了前面的设置,直接编译就能成功生成ossimplanet.exe。2.4节的内容应该也可以用这种方式来编译,因为可以找到D:\ossim\ossim_qt4\ossim_qt4.pro。
    如果exe和所有dll生成到同一个目录,那么就可以开始运行、调试和研究ossimplanet了。希望大家能顺利编译得到如下结果。Good luck!
  • 相关阅读:
    数据库的优化(非连接查询和连接查询的巧用)
    sql中为表添加一个含有括号的字段
    如何在有int型主键遍历表中的某一列数据
    三层架构的基本例子
    委托和事件
    sql中的常见函数
    博客园图灵杯第3届博问大赛(8.28~9.28)
    程序员部落酋长 Joel 之洞见
    安全领域多位世界级权威的智慧结晶——《黑客新型攻击防范:深入剖析犯罪软件》
    图灵“微软四大技术秘籍”近期出版!
  • 原文地址:https://www.cnblogs.com/mazhenyu/p/2733781.html
Copyright © 2011-2022 走看看