c++ - 迁移到VS2010之后,奇怪的IDL错误

  显示原文与译文双语对照的内容
0 0

下面是一个非常简单的IDL接口,我们已经成功地在 VS2008 ( 简短的参数列表缩短) 下使用:

interface Mailer
{
 string findNode( [in] string requestedNode );
 unsigned short addMessage( [in] string msg, [in] unsigned short kind );
};

我们正在将解决方案迁移到 VS2010 SP1. 现在,我们有以下构建错误:

M.idl(3): error MIDL2025: syntax error : expecting a type specification near"string"

这总是使用by注意到,我已经将 in 替换为 [in] 了。 我发现,in 2010也不喜欢,但是不要说任何 [in]

请注意,unsigned short 被接受为( 通过反转接口的2方法观察) 。

为什么我如何让MIDL再次理解 string

TIA 。

时间:原作者:4个回答

0 0

要从 C# 公开,请执行以下操作:

 interface Mailer
 {
 [return, MarshalAs(UnmanagedType.BStr)]
 string findNode( [In, MarshalAs(UnmanagedType.BStr)] string requestedNode );
 unsigned short addMessage( [In, MarshalAs(UnmanagedType.BStr)] string msg, [in] unsigned short kind );
 };

我看到你可能意味着将它从 C++ 公开:

interface Mailer
{
 HRESULT findNode( [out, retval] BSTR* result, [in] BSTR requestedNode );
 HRESULT addMessage( [out, retval] unsigned short* result, [in] BSTR msg, [in] unsigned short kind );
};
原作者:
...