Funktionen in C# aufrufen die Pointer enthalten



  • Hi

    habe eine Projektmappe in der zwei Projekte enthalten sind. Das eine ist in C# geschrieben und das andere in C++.NET. Ich bilde in meinem C#-Projekt ein Instanz vom C++-Projekt. Dann rufe ich verschiedene Funktionen, die in dem C++-Teil sind auf. Bisher hab ich nur Funktionen verwendet, die keinen, oder nur Variablen als Übergabeparameter enthalten verwendet.
    Jetzt möcht ich allerdings noch auf Funktionen, die Pointer als Übergabe enthalten, zugreiffen. Ich möchte aber wenns geht nicht im unsafe-Bereich arbeiten und trotzdem die Funktionen aufrufen können. Wenn ich für den Aufruf anstatt eines Pointers in der Funktion eine Variable nehme bekomm ich die Fehlermeldung dass die Typen nicht kompartiebel sind. Was mir durchaus einleuchtet.
    Gibts irgend ne Möglichkeit im safe-Bereich zu arbeiten aber trotzdem auf Funktionen mit Pointern oder nur Pointern aus dem C++-Teil zuzugreifen?

    Hier noch ein Beispiel wie ich das ganze mache:

    C_plusplus myC_plusplus = new C_plusplus();
    int help = 0;
    C_plusplus.GetPointerwert(help);
    
    __gc public class C_plusplus
    {
    public:
        int GetPointerwert(int *pointer);
    }
    


  • "int GetPointerwert(int *pointer);"
    Dies ist eine unmanaged Methode, du mußt stattdessen
    "int GetPointerwert(int __gc *pointer);" schreiben.

    Unter C# wird dieser Pointer als ref interpretiert.



  • Danke Scania!

    Für meine Funktion funktioniert das wunderbar.
    Weisst du zufällig auch wie ich das mit Pointern machen kann?
    In meinem C++ Teil sind Pointer deklariert die ich aus dem C#-Teil abrufen möchte, oder besser deren Inhalt brauch ich.

    __gc public class C_plusplus
    {
    public:
        void *pColor;
        int GetPointerwert(int *pointer);
    }
    

    Den Pointer pColor mit __gc zu versehen geht nicht.

    Danke



  • void* ist unmanaged, managed System::Object*


Anmelden zum Antworten