2017-07-15 40 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