Der Fehler „Das PInvoke-Element (Feld, Methode) muß statisch sein“ tritt in VB.NET 2003 auf, wenn du versuchst, eine externe (meist mit `Declare` oder `DllImport` eingebundene) Metho... [mehr]
Der Fehler „das pinvoke-element (feld, methode) muß statisch sein“ tritt auf, wenn du eine Methode aus einer nativen DLL (wie `kernel32.dll`) per P/Invoke aufrufst, aber die deklarierte Methode in deiner C#-Klasse **nicht als `static`** markiert ist. **Lösung:** Die Methode, die du mit `[DllImport]` deklarierst, **muss** als `static extern` deklariert werden. **Beispiel:** ```csharp [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public static extern uint GetLogicalDriveStrings(uint nBufferLength, [Out] StringBuilder lpBuffer); ``` **Wichtig:** - `static` ist zwingend erforderlich. - `extern` zeigt an, dass die Implementierung extern (in der DLL) liegt. **Verwendung:** ```csharp StringBuilder drives = new StringBuilder(256); GetLogicalDriveStrings((uint)drives.Capacity, drives); ``` **Zusammenfassung:** Deklariere die Methode mit `static extern`, dann verschwindet der Fehler. Weitere Infos: [Microsoft Docs – DllImportAttribute](https://learn.microsoft.com/de-de/dotnet/api/system.runtime.interopservices.dllimportattribute)
Der Fehler „Das PInvoke-Element (Feld, Methode) muß statisch sein“ tritt in VB.NET 2003 auf, wenn du versuchst, eine externe (meist mit `Declare` oder `DllImport` eingebundene) Metho... [mehr]