DLL einbinden

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    kiter20 schrieb:

    Quellcode

    1. pragma pack( 1 )
    Neben der Deklaration der Variablen (z.B. long long) ist die Packungsdichte der Struktur wichtig, bei .NET ist das eher dynamisch.
    Mit System.Runtime.InteropServices

    C#-Quellcode

    1. [StructLayout(LayoutKind.Sequential, Pack = 1)
    2. struct Test
    3. {
    4. public byte a;
    5. public byte b;
    6. public int c;
    7. }

    VB.NET-Quellcode

    1. <StructLayout(LayoutKind.Sequential, Pack:=1)> _
    2. Private Structure Test
    3. Public a As Byte
    4. Public b As Byte
    5. Public c As Integer
    6. End Structure
    Teste dieses Beispiel, ordne die Member anders an, nimm andere Member unterschiedlicher Länge dazu:

    VB.NET-Quellcode

    1. Imports System.Runtime.InteropServices
    2. Public Class Form1
    3. <StructLayout(LayoutKind.Sequential, Pack:=1)> _
    4. Private Structure Test1
    5. Public a As Byte
    6. Public b As Byte
    7. Public c As Integer
    8. End Structure
    9. Private Structure Test2
    10. Public a As Byte
    11. Public b As Byte
    12. Public c As Integer
    13. End Structure
    14. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    15. Dim t1 As Test1
    16. Label1.Text = Marshal.SizeOf(t1).ToString()
    17. Dim t2 As Test2
    18. Label2.Text = Marshal.SizeOf(t2).ToString()
    19. End Sub
    20. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()