注意:
- 传递BSTR变量给COM方法,HRESULT返回
8000FFFF
- 之前使用接口(interface)指针进行的调用成功: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
最佳答案
simFile 看起来是存储在 const char* 中的单个字符。
它不是一个以 NULL 结尾的字符串,除非它是一个空字符串并且它的内容是 0。 你确定你不是想做这样的事情吗:
const char *simFile = new char[1024];
strcpy(simFile, "path");
更好的是,您可以直接使用 SysAllocString 来获取 BSTR。
BSTR str = SysAllocString(_T("path"));
关于c++ - COM 方法调用返回灾难性故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/669347/