2017-07-15 42 views
-1

我希望我的IDL文件來實現,返回字符串數組的函數,所以我試了一下,如:C++ MIDL2025:期待一個類型規範「」附近

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

但是這會產生錯誤:

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

但我希望它返回這個數組或std::vector<BSTR>無論如何,請幫我解決這個問題。

回答

1

您不能在MIDL和COM中以這種方式使用std容器。

要麼你必須使用指針和數組作爲COM中的內存塊。所以你可以使用MIDL arrays。這裏有一些different types數組MIDL syntax

如果你想在自動化中使用接口,你必須使用包含SafeArray的VARIANT元素。具有IDispatch的標準自動化(VBScript)僅再次支持VARIANTS的SafeArrays。但是你也可以自由使用BSTR的SafeArrays。

+1

謝謝!很好的答案。 :-) – Blueeyes789