C#, C++ DLLs und variable Übergabeparameter



  • Hallo zusammen,

    ich habe ein kleines Problem, mit einer unter C++ geschriebenen DLL und dem Import selbiger in C#.

    Sachverhalt ist der folgende:
    Ich habe ein eigenes kleines Datenbanksystem unter C++ geschrieben und in einer DLL gekapselt.
    Jetzt möchte ich dafür ein schönes grafisches Frontend schreiben, und für solche Dinge finde ich C# recht nett.

    Nach ein wenig herumprobieren, habe ich es hinbekommen, z.B. folgende C++ Funktion unter C# einlaufen zu lassen:

    C++ Prototyp:

    //Connect to DataBase
    int		__declspec(dllexport)
    	NGineConnectToDataBase(char *pszPath, char *pszDBName);
    

    C# Implementierung:

    [DllImport("NGineDB.dll",
    			 EntryPoint = "?NGineConnectToDataBase@@YAHPAD0@Z",
    			 ExactSpelling = true,    // Bypass A or W suffix search
    			 CharSet = CharSet.Ansi,    // We want ANSI String
    			 CallingConvention = CallingConvention.Cdecl)] 
    		public static extern int NGineConnectToDataBase([MarshalAs(UnmanagedType.LPStr)] string pszPath, [MarshalAs(UnmanagedType.LPStr)] string pszDBName);
    

    Das funktioniert soweit ganz gut, jedoch habe ich auch Funktionen mit variablen Übergabeparametern. Folgende Funktion kann beispielsweise bis zu 32 ints/floats/chars/char*s in beliebiger Reihenfolge übergeben bekommen:

    //Insert Table
    int		__declspec(dllexport)
    	NGineInsertTable(char *pszTableName, int iColumnCount, ...);
    

    Jetzt bin ich mit meinen (recht beschränkten) C# Kenntnissen am Ende angelangt 😕

    Gibt es eine Möglichkeit eine solche Funktion in C# zu implementieren?

    Danke schonmal für jede Hilfe





  • Ah, klasse - dankeschön 🙂


Anmelden zum Antworten