2017-07-15 15 views
-1

Je veux que mon fichier IDL pour mettre en œuvre une fonction qui retourne un tableau String, donc je l'ai essayé comme:C++ MIDL2025: Attendons une spécification de type proche « »

[id(2)] HRESULT GReport_Person1([out, retval] std::vector<std::string> *Result); 
[id(3)] HRESULT GReport_Person2([out, retval] std::vector<BSTR> *Result); 

Mais cela génère l'erreur:

MIDL2025 syntax error : expecting a type specification near "std"

Mais je veux qu'il renvoie ce tableau ou un std::vector<BSTR> de toute façon, s'il vous plaît aidez-moi à résoudre ce problème.

Répondre

1

Vous ne pouvez pas utiliser les conteneurs std dans MIDL et COM de cette manière. Vous devez soit utiliser des pointeurs et des tableaux comme bloc de mémoire dans COM, soit

Donc, vous pouvez utiliser MIDL arrays. Voici quelques different types de tableaux dans MIDL syntax

Si vous souhaitez utiliser l'interface dans l'automatisation, vous devez utiliser des éléments VARIANT contenant un SafeArray. L'automatisation standard avec IDispatch (VBScript) ne prend en charge que SafeArrays de VARIANTS. Mais vous êtes également libre d'utiliser SafeArrays de BSTR.

+1

Merci! Bonne réponse. :-) – Blueeyes789