Я существующий интерфейс API, который имеет OUT, RetVal параметр, как показано нижеКак объявить IN, опциональный параметр вместе с OUT, RetVal параметром в IDL
HRESULT Test([out, retval] VARIANT_BOOL *pVal);
меня попросили, чтобы добавить дополнительный IN параметр , поэтому я попытался ниже, поскольку параметр RetVal по правилу должен быть последним параметром я был вынужден ставить дополнительный IN параметра в качестве первого параметра
HRESULT Test([in, optional, defaultvalue(VARIANT_FALSE)] VARIANT_BOOL optFlag, [out, retval] VARIANT_BOOL *pVal);
Когда я попытался вызвать этот API, как показано ниже, с только обязательный OU T параметров от C++ ошибки компилятора компонент, говоря, два параметра необходимы для этого вызова
VARIANT_BOOL outFlag;
pInterface->Test(&outFlag);
Пожалуйста, дайте мне знать, что мне не хватает здесь, чтобы достичь этой комбинации.
Атрибут [optional] полезен, когда компилятор использует библиотеку типов для импорта объявлений. Они обычно также переписывают функцию, поэтому [retval] становится возвращаемым значением, а код ошибки HRESULT превращается в исключение. Вы не используете эту функцию, похоже, что вы используете сгенерированный файл .h. И игнорировать HRESULT, плохую идею. Рассмотрим директиву #import. –