COM方法调用返回灾难性故障

时间:2009-03-21 13:55:09

标签: c++ windows visual-studio-2008 com

注意:

  • BSTR 变量传递给 COM 方法, HRESULT 返回8000FFFF
  • 以前使用界面指针进行的调用成功:HRESULT为0
  • 执行,在Visual Studio 成功内,失败 - 发布和调试

插图:

const char *simFile;
simFile = new char;
//omitted
_bstr_t simFileToOpen(simFile);
BSTR raw_sim_Open = simFileToOpen.copy();
SysFreeString(simFileToOpen);
delete simFile;

hresult = pis8->raw_Open (raw_sim_Open); //0x8000FFFF returned

1 个答案:

答案 0 :(得分:4)

simFile看起来是一个存储在const char *中的单个字符。

它不是以NULL结尾的字符串,除非它是一个空字符串,并且它的内容为0。 你确定你不想做这样的事情:

const char *simFile = new char[1024];
strcpy(simFile, "path");

更好的是,您可以直接使用SysAllocString获取BSTR。

BSTR str = SysAllocString(_T("path"));