Zum Inhalt springen

null für out IntPtr übergeben


Guybrush Threepwood

Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...