本文为本人原创,请尊重个人劳动成果
未经本人允许,严禁转载!

0 前言

ecw格式是一种基于小波压缩的遥感影像格式,其特点就是压缩率高,不需要建立影像金字塔也能快速读取。ECW最先是由ER mapper研发出来的,后来这个公司被ERDAS所在的Intograpg收购了,最关键的就是,收购之前是开放源代码的,而收购后就不开放源码了,并且只支持windows系统下面的读取ECW文件。现在官方最新的只读版本是4.4。而libecwj2-3.3是既可以读也可以创建的版本(免费license只能创建小于500M的影像),但至少能够创建影像了。

网上只有VS2008或者以前版本的编译介绍,下面就开始介绍该库在Windows VS2010的32位、64位下和Ubuntu(以及类Ubuntu的Linux系统)下的编译方式,以及编译过程中出现的一些常见问题的解决方法。

libecwj2-3.3库源代码下载,由悠悠思故乡提供:源码下载一 源码下载二

1 Windows下VS2010编译

1) Win32编译

先找到 $INSTALL/Source/C/NCSEcw/NCSEcw/目录,该目录下有三个文件NCSEcw.dsp、NCSEcw.sln和NCSEcw8.sln ,分别对应VC6、VS2003和VS2008的解决方案,如果用VS2010或以上版本编译的话,得先进行项目转化。(我是用VS2010编译的)
打开解决方案文件后,先设置为Release输出,然后生成解决方案。果然不出所料,VS2010就是跟VS2003不兼容,出现了下面的5个错误:
后三个错误只有在VS2010或者更高版本才会出现,只需如下替换(整个解决方案内替换)操作即可:
替换完后重新编译,就搞定了,前两个错误也就一并解决了!现在,dll、lib文件都在libecwj2-3.3文件夹下面的bin和lib目录下了。

2) x64编译

在VS里面,如下图所示,把配置管理器中的Win32换成x64。

重新编译,却发现了新的错误:

LINK : fatal error LNK1181: 无法打开输入文件“NCSUtil.lib”

这是因为,64位生成的lib与dll会在bin和lib目录下面的Win64子目录里面,而解决方案里面各个项目中的附加库目录中仍然跟32位的一样。理论上有两种修改方法:
1)将所有目录的输出文件“中都去掉Win64。但这会覆盖32位的编译成果;
2)在所有附加库目录中,都加上Win64,也就是将“..\..\..\lib”改成“..\..\..\lib\Win64”.

我选择按照第二种方法修改。修改完后重新编译,会出现很多类似于“fatal error C1083: 无法打开包括文件:“NCSUtil.h”“的错误。只要遵循以下原则修改就行:

1)找不到头文件的,就在每个项目的”属性→配置属性→VC++目录→包含目录“中加上”libecwj2-3.3\Source\include“的绝对路径;
2)找不到对应lib的,就在项目中的”属性→配置属性→链接器→常规→附加库目录“中,加上(或改为)”..\..\..\lib\Win64“;
3)出现类似”fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“X86”冲突“错误的,需要将该项目中的”属性→配置属性→库管理器→常规→目标计算机“或者”属性→配置属性→链接器→高级→目标计算机“改为”MachineX64 (/MACHINE:X64)“。

依照上述三条准则,应该可以正常编译。现在,dll、lib文件都在libecwj2-3.3文件夹下面的bin\Win64和lib\Win64目录下了。

2 Ubuntu下编译

在ubuntu系统下编译此库,需要搭建编译平台(例如gcc等),不了解的可以自行谷歌。

在Ubuntu下面编译libecwj2-3.3库非常简单,只需一下几个命令

cgz@cgz-Lenovo-IdeaPad-Y470:~/下载/libecwj2-3.3$  sudo bash configure
cgz@cgz-Lenovo-IdeaPad-Y470:~/下载/libecwj2-3.3$  sudo make
cgz@cgz-Lenovo-IdeaPad-Y470:~/下载/libecwj2-3.3$  sudo make install
cgz@cgz-Lenovo-IdeaPad-Y470:~/下载/libecwj2-3.3$  sudo make clean

如果出现找不到“libecwj2-3.3/Source/C/NCSEcw/NCSJP2/NCSJPCT1Coder.cpp”文件的问题,那么需要到该文件夹下面,将“NCSJPCT1CODER.CPP”改为“NCSJPCT1Coder.cpp”。(不知道为神马会有这种大小写错误……)

另外,系统需要用有libecwj2-3.3文件夹的读写权限,不然,在configure过程中,会出现“C编译器未找到”之类的错误。

3 总结

因为libecwj2-3.3库是上了年纪的库了,所以现在编译起来比较费劲(但为了可以创建压缩ecw影像文件,这应该是值得的),编译好后,可以参考目录下的sdk.pdf直接使用该库,也可以将其作为gdal库的扩展。本文还介绍了64位下编译该库的方法,希望能满足使用服务器的朋友的需要。

手把手教你编译RS GIS开源库(一)编译ECW3.3库相关推荐

  1. python硬件驱动_从零开始:手把手教你安装深度学习操作系统、驱动和各种python库!...

    原标题:从零开始:手把手教你安装深度学习操作系统.驱动和各种python库! 为了研究强化学习,最近购置了一台基于 Ubuntu 和英伟达 GPU 的深度学习机器.尽管目前在网络中能找到一些环境部署指 ...

  2. [github 教程]手把手教你最简单的开源项目托管GitHub入门教程_github 教程

    [github 教程]手把手教你最简单的开源项目托管GitHub入门教程--简介 自从google code关闭了下载服务了之后,GitHub作为了目前最好用的免费 开源 项目托管站点,众多开源项目都 ...

  3. 简单无脑,上手即用 - 手把手教你使用 智能红外温度传感器代码以及依赖的 gitee 库

    简单无脑,上手即用-智能温度传感器代码以及依赖的库! 前言 购买硬件 获取代码 使用代码和库 控制传感器 总结 前言 之前分享了一个大家自己在家就能制作的智能红外温度传感器,可以通过手机和电脑控制的 ...

  4. android 关联mp3,手把手教你Android如何使用NDK实现一个MP3转码库

    通过本文你可以学到以下知识:如何实现一个Android MP3转码库 一些和音频转码相关的基础知识 如何使用NDK将c/c++项目移植到Android端,并使用Java调用c/c++代码 如何使用CM ...

  5. axure元件库 文件上传_手把手教你打造一套属于产品经理自己的元件库

    之前有篇文章聊完了如何打造一套属于自己的原型图设计规范,今天咱们来聊聊如何打造一套属于自己的元件库. 毕竟,每个追求效率的PM,总会拥有一个专属自己的Axure元件库,并不断打磨优化. 今天就教大家一 ...

  6. 手把手教你构建WPF官方开源框架源代码

    从去年微软就将 WPF 开源了,差不多现在所有 WPF 的源代码都开源了.在学习框架的时候,我会做一些改动,期望能构建一个自己的版本进行测试.但是作为一个特别大的框架,想要构建跑起来可不是直接在 Vi ...

  7. 开源android项目到jcenter,手把手教你将Android项目开源到JCenter两种方式以及挖坑和填坑(一)...

    - 前言 开发中,或多或少都会用到无私的程序猿分享的开源项目,Androidstudio中使用开源也很方便 例如家喻户晓的Rxjava,只需要一句话compile 'io.reactivex:rxja ...

  8. 引入yml依赖包_手把手教你发布 Python 项目开源包

    编译:机器之心,作者:Gabriel Lerner.Nathan Toubiana 好不容易码了个 python 项目,是不是很兴奋?那么怎么把这个项目发出去让大家看到呢?本文作者写了一份在 GitH ...

  9. 【华为云技术分享】手把手教你如何在ARM上源码编译Redis

    一.基础环境信息 OS: Euler OS 2.8 CPU: ARM 二.编译和安装Redis步骤如下 执行如下命令,获取Redis源码. wget http://download.redis.io/ ...

最新文章

  1. 完胜ReLU!斯坦福的神经网络采用这种激活函数,竟高保真还原各种图像视频
  2. Xcode自带工具symbolicatecrash解析Crash文件
  3. 《零基础看得懂的C语言入门教程 》——(四)C语言的基本数据类型及变量
  4. 飞鸽传书创造出自己的一片天吧
  5. javascript 中的面向对象实现 如何封装
  6. 政府网络安全意识提升 中小企业客户却有待培育
  7. java 监测文件夹_实时监测文件夹中新增的文件和文件夹(java)
  8. python跟java 效率_Python注重可读性和效率:与Java、PHP以及 C++语言对比谁受欢迎?...
  9. 遥感图像——多波段数据存储的方式
  10. JS学习总结(2)——变量
  11. 单片机学习05_单片机软件架构
  12. NIKE ZOOM ASTORIA SKY HI ACG (MUSTARD/TAN)
  13. linux下qt打印功能如何实现,Qt Graphics-View的打印功能实现
  14. 插入数据报错: Incorrect string value: ‘\xE8\xB5\xB5\xE9\x9B\xB7‘ for column ‘Sname‘ at row 1
  15. 嗖的一下第二弹,这些好看的皮肤直接一键收下~~
  16. html相册制作成视频,怎么把照片制作成视频,视频相册制作免费软件|特效多多
  17. 我的世界制作服务器rj,mine imator(我的世界动画制作软件)
  18. mail163邮箱个人登录入口在哪里?
  19. 知识点索引:幂函数性质
  20. 海店湾养生专家:被称为油料之王的“神奇的豆子”,你知道它吗?

热门文章

  1. python实现电子邮件附件指定时间段,批量下载以及C#小程序集成实现
  2. 询问HTG:添加PDF打印机,隐藏Windows登录名和共享USB HDD
  3. 概率论几大分布的期望和方差证明整合
  4. Linux下vi修改行距,调整label中text显示的行间距
  5. 黑苹果Yosemite 10.10.1懒人版完美安装及简单驱动设置
  6. mean shift应用_使用Google地图制作MEAN应用(第二部分)
  7. may have been in progress in another thread when fork() was called.
  8. CMake I 设置编译器标志
  9. Sublime Text 全程图文指引
  10. 神奇的sqrt函数以及高精度记时函数