C++ Code mit C# verwenden



  • Hallo,
    Ich habe ein folgendes Problem. Ich habe ein Projekt in C#. Ich muss einige der dort enthaltenen KLassen und Objekte in einem Genetischen Algorithmus verwenden und die ergebnisse des Algorithmus wieder an das C# programm zurückgeben, dieser Algorithmus soll mit Hilfe der C++ evolving Objects Bibliothek erstellt werden. Soweit die Theory 🙂

    Leider habe ich bis jetzt nicht rausgefunden, wie ich den Zugriff machen könnte. 😕
    Ich wäre für jeden Tip dankbar
    Danke im Voraus



  • Dazu würde ich vermutlich ein C++/CLI-Projekt zwischenschalten wenn machbar (dann bitte aber an dieses Forum wenden). Alternative ist Pinvoke oder wie das heißt, hierzu kannst du z.B. hier was nachlesen:

    http://www.galileocomputing.de/openbook/visual_csharp/visual_csharp_24_001.htm

    cu André



  • Gella schrieb:

    Hallo,
    Ich habe ein folgendes Problem. Ich habe ein Projekt in C#. Ich muss einige der dort enthaltenen KLassen und Objekte in einem Genetischen Algorithmus verwenden und die ergebnisse des Algorithmus wieder an das C# programm zurückgeben, dieser Algorithmus soll mit Hilfe der C++ evolving Objects Bibliothek erstellt werden. Soweit die Theory 🙂

    Leider habe ich bis jetzt nicht rausgefunden, wie ich den Zugriff machen könnte. 😕
    Ich wäre für jeden Tip dankbar
    Danke im Voraus

    mit wrapper klassen
    sowas in der art

    //ein c++ cli projekt ist die einzige möglichkeit unter net direkt nativen c++ code zu schreiben um ihn in .NET erreichbar zu machen.
    //einfach eine assembly erzeugen die so in etwa aussieht.
    //diese assembly 
    
    class NativeCppKlasse
    {
    public: 
     NativeCppKlasse() {};
     void NativeFunktion(char const* string)
     {
      printf("NativeCppKlasse::NativeFunktion(%s)", string);
     }
    }
    
    using namespace System::InteropServices; //für interoperabilität von .net zu nativen typen
    
    namespace OwnNamespace {
    class WrapperKlasse
    {
     NativeCppKlasse m_Native;
     void NativeFunktion(System::String^ string) 
     {
       pin_ptr<char const> str = PtrToStringChars(string);
       m_Native.NativeFunktion(str);
     }
    }
    
    } //OwnNamespace
    
    //dependency auf die c++ cli assembly setzen.
    using OwnNamespace;
    
    namespace ns {
     class someClass 
     {
      public static int main(string[] arg)
      {
       WrapperKlasse c;
       c.NativeFunktion("test"); //führt die c++ native funktion aus
      }
     }
    }
    


  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum C++/CLI mit .NET verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten