COM组件在win2000下正常在win2003下出错(200分)

  • 主题发起人 主题发起人 riipgah
  • 开始时间 开始时间
R

riipgah

Unregistered / Unconfirmed
GUEST, unregistred user!
用VC6编写的COM组件, 在win2000下运行正常, 到XP/2003下就出错。
STDMETHODIMP GetData(VARIANT *varData);
{
CString XMLStr;
.........
XMLStr="......";
*varData = (_variant_t)XMLStr;
}
在 XMLStr 长度不大时都没问题, 但长度超过一定值后就会出错, 在COM组件中再把varData转为字符串也可以, 但是把varData传递出去时就把前面一些字符变成乱码了。这个长度限制在win2000、XP、win2003下都有, 但XP/2003的上限比2000小, 不知为什么, 请大虾指教, 能让XP/2003的上限等于或大于2000的上限。
另外, 我用delphi编写了同样的COM却能运行正常, 不知VC为什么和XP/2003 却不兼容。
 
问题已解决, 真是高兴啊。
*varData = (_variant_t)XMLStr;
换成:
_variant_t varTemp = (_variant_t)XMLStr;
*varData = varTemp.Detach();
 
对于传出参数或返回值,调用Detach()方法是正确的做法。在使用字符串做为返回值或传出参数时,也要使用这种方法。
Delphi对COM开发方面的封装隐藏了一些不为人知的信息。
 
恭喜解决
 
后退
顶部