1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | Imports System.Runtime.InteropServices <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _ Public Structure Tconditions <MarshalAs(UnmanagedType.R8)> Dim str_double0 As Double <MarshalAs(UnmanagedType.R8)> Dim str_double1 As Double <MarshalAs(UnmanagedType.R8)> Dim str_double2 As Double <MarshalAs(UnmanagedType.R8)> Dim str_double3 As Double <MarshalAs(UnmanagedType.R8)> Dim str_double4 As Double End Structure <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _ Public Structure Tswitches <MarshalAs(UnmanagedType.I4)> Dim str_int0 As Integer <MarshalAs(UnmanagedType.I4)> Dim str_int1 As Integer <MarshalAs(UnmanagedType.I4)> Dim str_int2 As Integer <MarshalAs(UnmanagedType.I4)> Dim str_int3 As Integer <MarshalAs(UnmanagedType.I4)> Dim str_int4 As Integer End Structure <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _ Public Structure Toutputs <MarshalAs(UnmanagedType.R8)> Dim str_output0 As Double <MarshalAs(UnmanagedType.R8)> Dim str_output1 As Double <MarshalAs(UnmanagedType.R8)> Dim str_output2 As Double <MarshalAs(UnmanagedType.R8)> Dim str_output3 As Double <MarshalAs(UnmanagedType.R8)> Dim str_output4 As Double End Structure Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Conditions As Tconditions Dim Switches As Tswitches Dim Outputs As Toutputs Dim Conditions2(11), Outputs2(25), Outputs3(25) As Double Dim Switches2(7) As Integer Dim aaa() As String Dim test2 As Double For i = 1 To 1 Conditions.str_double0 = Double.Parse(TextBox1.Text) Conditions.str_double1 = Double.Parse(TextBox2.Text) Conditions.str_double2 = Double.Parse(TextBox3.Text) Conditions.str_double3 = Double.Parse(TextBox4.Text) Conditions.str_double4 = Double.Parse(TextBox5.Text) Switches.str_int0 = Integer.Parse(ComboBox1.SelectedIndex) Switches.str_int1 = Integer.Parse(ComboBox2.SelectedIndex) Switches.str_int2 = 140 'Integer.Parse(ComboBox3.SelectedIndex) + 1 Switches.str_int3 = Integer.Parse(ComboBox4.SelectedIndex) Switches.str_int4 = Integer.Parse(ComboBox5.SelectedIndex) test2 = Selections(Conditions, Switches, Outputs) RichTextBox1.Clear() RichTextBox1.AppendText(Outputs.str_output0.ToString) RichTextBox1.AppendText(Outputs.str_output1.ToString) RichTextBox1.AppendText(Outputs.str_output2.ToString) RichTextBox1.AppendText(Outputs.str_output3.ToString) RichTextBox1.AppendText(Outputs.str_output4.ToString) Next End Sub <DllImport("libselections.DLL", EntryPoint:="Selections", CallingConvention:=CallingConvention.StdCall)> Public Shared Function Selections(<MarshalAs(UnmanagedType.LPArray), [In]()> ByVal Conditions As Tconditions, <MarshalAs(UnmanagedType.LPArray), [In]()> ByVal Switches As Tswitches, <MarshalAs(UnmanagedType.LPArray), [Out]()> ByVal Outputs As Toutputs) As Double 'String() 'ByRef Outputs As Toutputs , <[Out](), MarshalAs(UnmanagedType.LPArray)> ByVal Outputs() As Double End Function End Class |
Direct link: https://paste.plurk.com/show/2196391