Zeichenkette char aus C++ DLL in c# empfangen



  • Hi Folks,
    ich möchte eine Zeichenkette (char[]) aus einer c++ DLL auslesen. Leider kracht der Aufruf mit einer exception zusammen.
    Folgendes habe ich gemacht:

    extern "c" {
      __declspec(dllexport) char* GetAddress(int iNr)
      {
         return(cStr[iNr]);
      }
    }
    

    [/code]

    [DllImport("InterComHBM.dll", CallingConvention = CallingConvention.Cdecl)]
    public static extern char* _GetAddress(int iNr);
    

    Wie muss ich in c# diese Zeichenkette einlesen?

    Danke für eine Hilfe!

    Dieter



  • Warum nicht einfach

    [DllImport("InterComHBM.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
    public static extern string GetAddress(int iNr);
    


  • Zunächst ein Danke!

    DarkShadow44 schrieb:

    Warum nicht einfach

    [DllImport("InterComHBM.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
    public static extern string GetAddress(int iNr);
    

    Hat leider nicht funktioniert. Habe aber eine Lösung gefunden:

    [DllImport("InterComHBM.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
    public static extern void _GetQuantumName(int iNr, StringBuilder Mybuffer);
    
    StringBuilder buffer = new StringBuilder("12345678901234567890"); //als Test
    _GetQuantumName(i, buffer);
    StQAdress = buffer.ToString();
    .
    .
    .
    

    Gruß Dieter


Log in to reply