Как вернуть строковое значение из C ++ в JavaScript (Windows / Visual Studio 2008)?

У меня есть следующий IDL, который отлично работает для передачи строкового значения из JS в C ++. Код JS передает строковое значение объекту c ++ / COM.

[id(1), helpstring("method DoSomething")] HRESULT DoSomething([in] BSTR otlToken);

Теперь мне нужно добавить еще один метод, чтобы вернуть строку вызывающей стороне JavaScript. Я добавил следующее в IDL:

[id(3), helpstring("method GetValue")]  HRESULT GetValue([out] BSTR *nicknames);

Разработчик, работающий на стороне JS, говорит, что он получает сообщение о неправильном количестве аргументов и других вещах в зависимости от того, пытается ли он вызвать метод или получить доступ к нему как к свойству.

Требуется ли JS вызов по ссылке, чтобы получить это, или мне нужно передать один параметр BSTR * как [in, out]?

Как я могу заставить это работать? (получение строкового значения из C ++ / IDL для вызывающей стороны JS?

Как должен выглядеть IDL и как должен выглядеть код JS?

2

Решение

Сам Javascript не знает, как обрабатывать значения, возвращаемые через параметры. Вы должны явно объявить, какой параметр является возвращаемым значением, иначе COM просто вернет HRESULT. Вы можете сделать это с помощью следующего.

[id(3), helpstring("method GetValue")]  HRESULT GetValue([out, retval] BSTR *nicknames);
2

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

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

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