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

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

注意:

  • 传递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/

相关文章:

c++ - std::set 的 union 操作

.net - 检查特定项目引用是否存在(C# 代码、预处理器指令...)

visual-studio-2008 - VS2008安装项目会更新Net 3.5 SP1吗?

windows - 如何在 Windows XP 上的 startup.bat 文件中设置 HeapDumpOnOutOfMemoryError 和 HeapDumpPath

python - 如何使用 Python 精确复制 Windows cmd shell mkdir 的行为?

c++ - QT 可以与 Windows 原生集成吗?

c# - 调试时编辑 C#

c++ - googletest 有没有办法为被调用函数中的断言生成调用者行号?

C++ 错误 : identifier 'class name' is undefined

c++ - 在 OpenGL 批处理渲染器中批处理任意顶点数据