使用 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):点这里。
也可以下载修改好的源代码:点这里。
这个开发包中配有 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):点这里。
也可以下载修改好的源代码:点这里。
相关文章推荐
- Win32 SDK 应用程序中使用XP控件外观(VS 2008)
- 使用VS 2008(带sp1)编译VC 6.0的一个工程,出现下面的编译错误
- 在vs中使用widcom bluetooth sdk编译蓝牙程序可能遇到的errs和solutions
- VS 2008的64位编译环境的安装和使用
- VS 2008的64位编译环境的安装和使用
- VS 2008的64位编译环境的安装和使用
- Win32 SDK 应用程序中使用XP控件外观(VS 2008)
- VS 2008的64位编译环境的安装和使用
- 使用vs 2008编译mysql 遇到的问题
- VS 2008的64位编译环境的安装和使用
- VS 2008编译使用shapelib
- 用Visual Studio 2008(VS)编译WebKit的r63513
- 使用vs编译出现 ”error LNK1169: 找到一个或多个多重定义的符号“的错误
- VS 2005 中关于编译时使用那种字符集问题 (转载)
- ffmpeg0.6编译后的sdk的使用举例——音频转换
- VS2015使用pjsip库编译一个helloworld工程
- 不使用VS将源代码编译成DLL
- ubuntu下使用VScode打开本地使用makefile编译的工程(包括命令行参数的配置)
- VS2013上编译并使用Tesseract3.0.3.中文识别技术
- cURL安装--Cocos Creator项目使用 VS Code 激活脚本编译