如果我用这样的东西调用我的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:只要我只传递一个像* returnme =“T”这样的字符就行了。但是当它需要成为一个字符串时它会抛出,即使我指定一个指向字符串的指针我也会收到错误。
答案 0 :(得分:0)
在你帮助我之后解决方案很简单:-) 事实证明我需要做这样的事情:
string someString = "TestME";
_bstr_t s(someString.c_str());
*returnme = SysAllocString((BSTR)s);
适合我。
我自己也在回答这个问题,以便其他有此问题的人不再需要再搜索。 希望这也有助于其他人。