C++ MIDL2025:期望“”附近的类型规范
C++ MIDL2025: Expecting a type specification near ""
我希望我的 IDL 文件实现 return 字符串数组的函数,所以我试了一下:
[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"
但是我想要return这个数组或者std::vector<BSTR>
无论如何,请帮我解决这个问题。
您不能以这种方式在 MIDL 和 COM 中使用 std 容器。
要么你必须使用指针和数组作为 COM 中的内存块。所以你可以使用 MIDL arrays. Here are some different types of arrays in MIDL syntax
如果您想在自动化中使用该界面,您必须使用包含 SafeArray 的 VARIANT 元素。使用 IDispatch (VBScript) 的标准自动化再次仅支持 VARIANTS 的 SafeArrays。但您也可以自由使用 BSTR 的 SafeArrays。
我希望我的 IDL 文件实现 return 字符串数组的函数,所以我试了一下:
[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"
但是我想要return这个数组或者std::vector<BSTR>
无论如何,请帮我解决这个问题。
您不能以这种方式在 MIDL 和 COM 中使用 std 容器。
要么你必须使用指针和数组作为 COM 中的内存块。所以你可以使用 MIDL arrays. Here are some different types of arrays in MIDL syntax
如果您想在自动化中使用该界面,您必须使用包含 SafeArray 的 VARIANT 元素。使用 IDispatch (VBScript) 的标准自动化再次仅支持 VARIANTS 的 SafeArrays。但您也可以自由使用 BSTR 的 SafeArrays。