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:* returnme = "T"のように1文字だけ渡す限り、正常に機能します。しかし、文字列である必要がある場合は、文字列にポインタを割り当ててもエラーが発生します。

4

1 に答える 1

0

あなたたちが私を助けてくれた後の解決策は非常に簡単です:-)結局のところ、私は次のようなことをする必要があります:

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

私にとってはうまくいきます。

私はこれに自分で答えているので、この問題を抱えている他の誰かがもう検索する必要がないかもしれません。うまくいけば、これは他の人にも役立つでしょう。

于 2012-12-17T14:43:56.863 に答える