Если я называю свой 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», он работает нормально. Но когда это должна быть строка, которую он выдает, даже если я назначаю указатель на строку, я получаю ошибку.
Решение довольно простое после того, как вы, ребята, помогаете мне 🙂
Как оказалось, мне нужно сделать что-то вроде этого:
string someString = "TestME";
_bstr_t s(someString.c_str());
*returnme = SysAllocString((BSTR)s);
Хорошо работает для меня.
Я отвечаю на это сам, так что, возможно, кому-то еще с этой проблемой больше не нужно будет искать.
Надеюсь, это поможет и другим.
Других решений пока нет …