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 TheoryLeider 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 TheoryLeider habe ich bis jetzt nicht rausgefunden, wie ich den Zugriff machen könnte.
Ich wäre für jeden Tip dankbar
Danke im Vorausmit 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.