2

如果我用这样的东西调用我的 COM 方法

d.someMethod(string, doule, ref string);

我收到上面提到的错误。被调用的方法是这样的

STDMETHODIMP SomeClass::someMethod(BSTR, DOUBLE, BSTR*)

只要我不为 BSTR* 分配一些值,它就可以正常工作。

编辑:IDL 描述

interface IDistanceClass : IDispatch{
    [id(1), helpstring("some helpstring")] HRESULT someMethod([in] BSTR firstarg, [in] DOUBLE secondarg, [in,out] BSTR* returnme);
};

EDIT2:只要我只传递 1 个像 *returnme = "T" 这样的字符,它就可以正常工作。但是当它需要是一个它抛出的字符串时,即使我将一个指针分配给一个字符串,我也会得到一个错误。

4

1 回答 1

0

在你们帮助我之后,解决方案非常简单:-)事实证明我需要做这样的事情:

string someString = "TestME";
_bstr_t s(someString.c_str());
*returnme = SysAllocString((BSTR)s);

对我来说效果很好。

我自己回答这个问题,这样可能有这个问题的其他人就不需要再搜索了。希望这对其他人也有帮助。

于 2012-12-17T14:43:56.863 回答