注意:

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

    10-11 00:36