【发布时间】:2018-09-05 02:04:30
【问题描述】:
我有一个来自这个 VB.net 的函数需要导入到 C#。 我尝试了各种 VB.NET 到 C# 的转换器,但它不能与与此函数关联的导入 dll 正常工作。 任何人都知道如何将以下 VB 函数正确转换为 C#:
<DllImport("E5KDAQ.dll")> _
Public Function E5K_ReadDIStatus(ByVal id As Short,<[In](),Out()> ByRef chnval As Integer) As Short
End Function
使用在线转换器,它提供以下内容: 转换有错误的c#
[DllImport("E5KDAQ.dll")]
public static extern short E5K_ReadDIStatus(short id, [In()] out int chnval);
【问题讨论】:
-
试试
public static extern short E5K_ReadDIStatus(short id, [In(), Out()] ref int chnval);。 -
has error请把错误放在文本而不是图片中。 -
在 C# 中,
out用于仅用于输出的参数,而ref用于用于提供输入和输出的参数。在 VB 中,ByRef用于两者。这就是使用属性来限定ByRef关键字的原因。这些属性清楚地表明chnval参数将用于输入和输出,这意味着ref必须在C# 中使用。因为ref是明确的,您可能甚至不需要这些属性,但如果您确实包含它们,您显然需要两者。 -
感谢 Ahmed Abdelhameed,您的解决方案有效
标签: c# vb.net pinvoke vb.net-to-c#