IAutomation - Как получить значение аргумента, переданного указателем?
В файле .idl записано:
interface IAutomation : IDispatch {
[id(0x000000e0), helpstring("Returns if the player is ready. Many of the other commands fail as long as the player is not ready.")]
HRESULT GetReady([out] VARIANT* Ready);
};
Полагаю, GetReady () - метод, а не свойство.
Если я пытаюсь использовать библиотеку VOLE:
object player = object::create("StereoPlayer.Automation", CLSCTX_LOCAL_SERVER, vole::coercion_level::valueCoercion);
VARIANT var;
::VariantInit(&var);
VARIANT pos = player.invoke_method(vole::of_type<VARIANT>(), L"GetReady", var);
Но получаю ошибку компоновщика:
error LNK2019: unresolved external symbol "public: static struct tagVARIANT __cdecl vole::com_return_traits<struct tagVARIANT>::convert(struct tagVARIANT const &,enum vole::coercion_level::coercion_level)" (?convert@?$com_return_traits@UtagVARIANT@@@vole@@SA?AUtagVARIANT@@ABU3@W4coercion_level@42@@Z) referenced in function "public: struct tagVARIANT __thiscall vole::object::invoke_method<struct tagVARIANT,struct tagVARIANT>(struct vole::of_type<struct tagVARIANT>,unsigned short const *,struct tagVARIANT const &)" (??$invoke_method@UtagVARIANT@@U1@@object@vole@@QAE?AUtagVARIANT@@U?$of_type@UtagVARIANT@@@1@PBGABU2@@Z)
Вызов других методов, которые ничего не возвращают, работает отлично.
Также я пытаюсь напрямую вызвать метод IDispatch :: Invoke (), как описано в Как использовать Visual C ++ для доступа к свойствам документов с помощью автоматизации .Но неправильно понял, как вернуть значение.