“内存_com_error错误”如何解决?

时间:2022-08-03 20:17:52
在VC++2005环境下,封装了一个组件。客户端在第一次使用COM的接口方法时出现异常,在tlb文件里中断,提示“0x7c812aeb处未处理的异常:Microsoft C++异常内存位置0想0012f52c处的_com_error”。请问是哪里出了问题?
该接口方法使用BSTR传入字符串。

10 个解决方案

#1


接口是否正确获得,
你可以用
try
{}
catch(_com_error &e)
{
   e.Description();


看下错误描述

#2


楼主还是自己调试吧!这样描述,很难找到问题所在!
出现这种错误,原因有很多:比如指针没有初始化、内存访问越界。。。。。

#3


调试看看

#4


同意ls的,Debug下打开call stack窗口,看看运行到哪个函数抛出了该异常的

#5


接口是否正确使用,
参数是否正确,
ansi和unicode的问题
debug了,问题太抽象,情况有多种

#6


用call stack窗口,单步调试看看吧

#7


抛出的异常为:(以下为监视出口内容)
_com_error::Desprition  返回    {<错误的指针>(1)}    _bstr_t
e    {-2147352571}    _com_error &

附:
1)异常处理代码
try
{
  m_iDisplay->OpenTerrain(bsTerrainFielPath);
}
catch(_com_error &e)
{
  e.Description();
}
2 )程序在在tli文件--OpenTerrain函数的_con_dispatch_method调用时中断。
inline long IInterface::OpenTerrain(_bstr_t terrainPath)
{
  long _result = 0;
  _com_dispatch_method(this, 0x3, DISPATCH_METHOD, VT_I4, (void*)&_result, L"\x0008", (BSTR)terrainPath);
  return _result;
}

#8


你可以把代码发给我,我帮你调试一下
gw_net@163.com

#9


已经搞定。是参数类型的问题。当使用向导添加方法时,选择参数类型为BSTR,但是在相应的实现函数中参数类型为LPCTSTR。而不是BSTR

#10


该回复于2011-11-15 10:41:29被版主删除

#1


接口是否正确获得,
你可以用
try
{}
catch(_com_error &e)
{
   e.Description();


看下错误描述

#2


楼主还是自己调试吧!这样描述,很难找到问题所在!
出现这种错误,原因有很多:比如指针没有初始化、内存访问越界。。。。。

#3


调试看看

#4


同意ls的,Debug下打开call stack窗口,看看运行到哪个函数抛出了该异常的

#5


接口是否正确使用,
参数是否正确,
ansi和unicode的问题
debug了,问题太抽象,情况有多种

#6


用call stack窗口,单步调试看看吧

#7


抛出的异常为:(以下为监视出口内容)
_com_error::Desprition  返回    {<错误的指针>(1)}    _bstr_t
e    {-2147352571}    _com_error &

附:
1)异常处理代码
try
{
  m_iDisplay->OpenTerrain(bsTerrainFielPath);
}
catch(_com_error &e)
{
  e.Description();
}
2 )程序在在tli文件--OpenTerrain函数的_con_dispatch_method调用时中断。
inline long IInterface::OpenTerrain(_bstr_t terrainPath)
{
  long _result = 0;
  _com_dispatch_method(this, 0x3, DISPATCH_METHOD, VT_I4, (void*)&_result, L"\x0008", (BSTR)terrainPath);
  return _result;
}

#8


你可以把代码发给我,我帮你调试一下
gw_net@163.com

#9


已经搞定。是参数类型的问题。当使用向导添加方法时,选择参数类型为BSTR,但是在相应的实现函数中参数类型为LPCTSTR。而不是BSTR

#10


该回复于2011-11-15 10:41:29被版主删除