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了,截止目前,再没有报错