您的位置:首页 > 其它

使用 VS 2008 编译 ECW SDK 3.3

2011-01-24 23:53 585 查看
ECW 格式是 ERMapper 公司研发的一种利用小波变换算法的图像压缩格式。ERMapper 已经被 ERDAS 公司收购,ECW SDK 3.3 是 ERMapper 公司放出的最后一个开源的 ECW 开发包。下载地址:libecwj2-3.3

这个开发包中配有 VS8 的解决方案 .sln 文件。但是,在 VS 2008 下编译时还需要作出以下修改。

1. 修改 libecwj2-3.3/Source/C 目录下的所有 *.vcproj 文件,将其中的 /mapinfo:lines 全部删除,VS2008 版本不再支持这个参数。

2. 查看 libecwj2-3.3/Source/include/NCSJPCBuffer.h 文件,其中有一段代码为:

/** Maximum UINT8 value */

static const UINT32 MAXUINT8;

/** Maximum UINT16 value */

static const UINT32 MAXUINT16;

/** Maximum UINT32 value */

static const UINT32 MAXUINT32;

/** Minimum UINT8 value */

static const UINT32 MINUINT8;

/** Minimum UINT16 value */

static const UINT32 MINUINT16;

/** Minimum UINT32 value */

static const UINT32 MINUINT32;

/** Maximum INT8 value */

static const UINT32 MAXINT8;

/** Maximum INT16 value*/

static const UINT32 MAXINT16;

/** Maximum INT32 value */

static const UINT32 MAXINT32;

/** Minimum INT8 value */

static const INT32 MININT8;

/** Minimum INT16 value */

static const INT32 MININT16;

/** Minimum INT32 value */

static const INT32 MININT32;

这里面的 MAXUINT8 等变量与 VS2008 自带的 BaseTds.h 里面的预定义名称重复。将这些变量加一个下划线全部重新命名(当然,也可以命名为其它名字),如下,同时还要将整个解决方案中所有用到这些变量的地方也重新命名(有几十个地方,最好使用替换功能)。

/** Maximum UINT8 value */

static const UINT32 MAXUINT8_;

/** Maximum UINT16 value */

static const UINT32 MAXUINT16_;

/** Maximum UINT32 value */

static const UINT32 MAXUINT32_;

/** Minimum UINT8 value */

static const UINT32 MINUINT8_;

/** Minimum UINT16 value */

static const UINT32 MINUINT16_;

/** Minimum UINT32 value */

static const UINT32 MINUINT32_;

/** Maximum INT8 value */

static const UINT32 MAXINT8_;

/** Maximum INT16 value*/

static const UINT32 MAXINT16_;

/** Maximum INT32 value */

static const UINT32 MAXINT32_;

/** Minimum INT8 value */

static const INT32 MININT8_;

/** Minimum INT16 value */

static const INT32 MININT16_;

/** Minimum INT32 value */

static const INT32 MININT32_;

不做以上修改的话,编译的时候会报:error C2059: syntax error : '<L_TYPE_raw >' 错误。根据网上其它地方说的添加 _WIN32_WINNT 0x0500 其实也不行的。

可以直接下载编译好的包(包括 dll、lib 和 include):点这里

也可以下载修改好的源代码:点这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: