代码之家  ›  专栏  ›  技术社区  ›  Stefan Steiger Marco van de Voort

将C++字符串/WCHARGET**转换为C?

  •  2
  • Stefan Steiger Marco van de Voort  · 技术社区  · 16 年前

    问:我需要从C++可执行文件中调用一个c*ydll。 我使用COM,它对int、long和bool都很好。但我没法找到线索…

    IDL文件说它是一个BSTR,但我不能正确传递它,也不能检索到一个BSTR。 我尝试使用wchar_t*和sysalloc,就像使用vb6一样,但这似乎不起作用。

    有人知道怎么回事,或者怎么了?

    1 回复  |  直到 16 年前
        1
  •  2
  •   cpalmer    16 年前

    如果您使用ATL,可以这样做:

    std::string theString = "hello";
    CComBSTR bstr(theString.c_str());
    DoSomething(bstr);  // Function that takes a BSTR as an argument
    

    或者如果没有ATL:

    const wchar_t* theString = L"hello";
    BSTR bstr = SysAllocString(theString);
    DoSomething(bstr);
    SysFreeString(bstr);