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