【问题标题】:Return C array to VB.NET将 C 数组返回到 VB.NET
【发布时间】:2016-11-19 23:41:46
【问题描述】:

我有一个通用 C DLL,带有返回指向双精度数组的指针的函数。

我已经能够按照我的要求在 Perl 和 C# (Return C++ array to C#) 中使用它。

如何在 VB.NET 中使用 DLL 返回的数组(double)?

【问题讨论】:

  • 你说的是VB.NET还是VB6?您的问题被标记为 VB6,但您的意思更可能是 VB.NET。
  • @DAXaholic - 已更正!
  • 直接翻译成 VB.NET 的 C# 代码应该可以工作。如果不是,请在问题中说明。
  • @Heinzi - 使用converter.telerik.com 进行翻译工作!谢谢...
  • @Kanchu:不客气!我建议您add an answer to your question,以便其他有相同问题的人可以从您的解决方案中受益。

标签: c arrays vb.net dll


【解决方案1】:

正如@Heinzi 所建议的:

Imports System.Runtime.InteropServices

Declare Function functionReturnsArrayPointer Lib "cLibrary.dll" _
        (ByVal argument1 As Double, ByVal argument2 As Integer) As IntPtr

Sub Main()
    Dim arrayWithResult As Double() = New Double(2) {}
    Dim pointerToArray As IntPtr = functionReturnsArrayPointer(12.345, 6)

    Marshal.Copy(pointerToArray, arrayWithResult, 0, 2)
    ' Can also be done as:
    ' Marshal.Copy(functionReturnsArrayPointer(12.345, 6), arrayWithResult, 0, 2)

    ' Do whatever with array
End Sub

【讨论】:

    猜你喜欢
    • 2013-07-12
    • 1970-01-01
    • 2020-07-06
    • 2012-05-01
    • 2021-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多