Zeroc ice 3.4.2 demo无法打开及vector push_back()的问题

win7操作系统,zeroc ice3.4.2安装后,demo的工程无法打开,报错。

网上查了下,说是C:\ProgramData\ZeroC目录下ice.props和ice.vsprops文件中乱码的问题。打开看了一下,果然如此。

在文件的第一行:

锘??xml version="1.0" encoding="utf-8"?>

需要将其修改,由于访问权限的问题,修改后无法保存。所以想到了另外的解决方法。可以用以下几步:

(1)将这两文件copy到其他目录,比如桌面。

(2)用记事本打开,将其修改为:<?xml version="1.0" encoding="utf-8"?>

(3)保存后,将原目录的文件替换就OK了

---------------------------------------------------------------------------纠错备忘--------------------------------------------------------------------------------------------

最近用DevPartner测Ice服务端(C++代码),DevPartner报错

unrelated pointer” error when using std::vector push_back()。发现代码定位在如下这几行:

for(i = 0; i < pFodTmpImg->len; i++)
 { 

        (Myalertedmsg.fodPic).push_back(pFodTmpImg->pImgData[i]);   
}

这几行代码的作用是通过push_back(),将图片信息添加到消息中,准备发送。

在DevPartner的网站上提示,这是VS2010才会出现的错误,但在VS2008中未发现。

 

仔细想了一下,可能是由于ICE中msg的数据格式定义和c++中图片格式的定义类型不同造成的。

Myalertedmsg.fodPic在ice接口文件中定义的是 sequence<byte> ByteSeq类型的。

而pFodTmpImg->pImgData[i]是unsigned char型的,可能导致双方在指针访问数据时,移动不同的大小。

 

尝试过将sequence<byte> ByteSeq修改为sequence<unsigned char> CharSeq,但slice2cpp无法识别和编译,没办法,只好改代码。

把上面的代码修改为:

for(i = 0; i < pFodTmpImg->len; i++)
 { 

        (Myalertedmsg.fodPic).push_back((Ice::byte)pFodTmpImg->pImgData[i]);      
}

结果OK了,截止目前,再没有报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值