MarshlDirectiveException в C # при попытке передать BSTR * из COM-компонента

Если я называю свой 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», он работает нормально. Но когда это должна быть строка, которую он выдает, даже если я назначаю указатель на строку, я получаю ошибку.

2

Решение

Решение довольно простое после того, как вы, ребята, помогаете мне 🙂
Как оказалось, мне нужно сделать что-то вроде этого:

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

Хорошо работает для меня.

Я отвечаю на это сам, так что, возможно, кому-то еще с этой проблемой больше не нужно будет искать.
Надеюсь, это поможет и другим.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]