VC.NET 2003 编译基于 STLport-5.1.3 的 ICU 3.6

 

本文介绍 VC.NET 2003 编译基于 STLport-5.1.3 的 ICU 3.6时遇到的问题及解决办法.

先安装了 STLport-5.1.3 到 C:/STLport-5.1.3. 然后编译 ICU 3.6.
由于 ICU3.6 自带了 allinone.sln, 可以直接用 VC.NET 2003 打开并编译.

但当编译其中的项目 common 时, 在进行到编译资源的时候会报如下错误

正在编译资源...
C:/STLport-5.1.3/stlport/stddef.h(31) : error RC2006: #include expected a file name, found 'newline'
C:/icu4c-3_6-src/icu/source/common/Release/RCa05352(108) : fatal error RC1116: RC terminating after preprocessor errors

经检查,是 ./unicode/umachine.h 中有
#include <stddef.h>

由于安装了 STLport, 所以用的是 STLport 提供的 stddef.h, 即.
C:/STLport-5.1.3/stlport/stddef.h

而它里面实际上通过
#  include _STLP_NATIVE_C_HEADER(stddef.h)
来调用本地的 stddef.h

然而,不知什么原因, 此时的 _STLP_NATIVE_C_HEADER 却还没有定义,
所以整个语句展开后仅仅是
#include
于是出现上述错误.

解决的办法是在 ./unicode/umachine.h 文件中, 在
#include <stddef.h>
之前显示定义 _STLP_NATIVE_C_HEADER. 如下:
#if !defined(_STLP_NATIVE_C_HEADER)
#define _STLP_NATIVE_C_HEADER(header) <C://Program Files//Microsoft Visual Studio .NET 2003//Vc7//include//header>
#endif

这样保证宏展开后可以包含到本地的 stddef.h. 问题解决. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值