Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Ich hab eine Funktion welche aus einer C Dll stammt per DllImport in meinem C# Programm. Die hat mehrere char ** Paramter welche mit Werten gefüllt werden.

Also in C säh das ungefähr so aus:


void foo (char** var1, char** var2, char** var3);
...
LPSTR str = NULL;
foo (&str, NULL, NULL);
[/PHP]

in C# hab ich für die Felder out IntPtr genommen

[PHP]
[DllImport ...]
extern static void foo(out IntPtr var1, out IntPtr var2, out IntPtr var3);
...
IntPtr str = IntPtr.Zero;
foo(out str, ?, ?);
string myString= Marshal.PtrToStringAnsi(str);

So bekomme ich den Korrekten Wert in myString. Aber wie kann ich für die anderen Parameter null übergeben?

Dadurch das die als out markiert sind kann ich nicht IntPtr.Zero übergeben.

  • Autor
IntPtr.Zero

Ist nicht NULL, aber etwas, das Du verwenden kannst.

Wie in meinem letzten Satz geschrieben geht das durch das out leider nicht ;)

@Klotzkopp

Ja ist leider das selbe wie mit out. Bei out oder ref erwartet der Compiler eine Variable.

Es sieht so aus als wäre die einzige Möglichkeit das in dem Fall wirklich Null auf der anderen Seite ankommt die Methode mit unsafe zu markieren um mit Pointern arbeiten zu können. Die Aufrufende Funktion muss dann auch als unsafe markiert werden so das man dann per & die Referenz einer Variablen oder null übergeben kann.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.