Frage

Tut Mono .NET Unterstützung und kompilieren von C++ / CLI?

Wenn nicht, wissen Sie, wenn Sie haben, irgendwelche Pläne zu unterstützen?

War es hilfreich?

Lösung

Wir haben nicht einen Compiler für C ++ / CLI, wäre es ein sehr großes Unternehmen für eine sehr kleine totzukriegen sein. Beachten Sie auch, dass die C ++ / CLI-Spezifikation inhärent fehlerhaft ist und nicht tragbar, so in der Lage zu sein kompilieren es nicht viel im allgemeinen Fall helfen würde.

Sie kompilieren können die MS .NET-Compiler und in mono mit diesen Einschränkungen ausführen:

  1. mit mono auf jedem System ausgeführt werden, wenn die C ++ / CLI App reine verwaltet wird (aber dann, warum so eine hässliche Sprache und nicht C #?)

  2. mit mono an Fenstern in den anderen Fällen (C ++ / CLI-Anwendungen laufen, sind im Allgemeinen nicht tragbar und umfassen nativen Code, so können sie nur an Fenstern und sind uninteressant für das Hauptziel von Mono laufen, die ist laufen verwalteten Programme auf Linux)

Beachten Sie, dass MS sich schließlich C ++ / CLI fallen, so investieren Sie nicht zu viel auf sie und wechseln Sie in C #.

Andere Tipps

Mono hat kürzlich einige ziemlich große Schritte mit C++ Interoperabilität CXXI.

Von diesem Beitrag, die kurze Geschichte ist, dass die neue CXXI-Technologie ermöglicht es C# -/.NET Entwickler:

  • Leicht zu konsumieren vorhandenen C++ - Klassen aus C# oder andere .NET Sprache
  • Instanziieren C++ Objekte aus C#
  • Aufrufen von C++ - Methoden in C++ - Klassen aus C# - code
  • Aufrufen von C++ - inline-Methoden von C# - code (sofern Ihre Bibliothek kompiliert mit -fkeep-inline-Funktionen oder, dass Sie eine Leihmutter Bibliothek)
  • Unterklasse von C++ - Klassen ab C#
  • Überschreiben der C++ - Methoden mit C# - Methoden
  • Setzen Instanzen von C++ - Klassen oder gemischten C++/C# - Klassen C# - code und C++, als wären Sie native code.

CXXI ist das Ergebnis von zwei Sommern der Arbeit von Googles "Summer of Code" zur Verbesserung der Interoperabilität von Mono mit der C++ - Sprache.

Mono ist in der Lage, reinen 'Baugruppen, die von C ++ / CLI, dh zu laufen. diejenigen, die keine alle nativen Code. Die verschiedenen / CLR-Optionen durch den Compiler C ++ unterstützt werden dokumentiert auf MSDN .

Es gibt derzeit keine Unterstützung C für die Erstellung ++ / CLI. Es gibt einige Arbeit gewesen GCC auf Modifizieren IL zu emittieren, aber es ist nicht vollständig (und erscheint nicht aktiv). Sie, wie dieser Artikel .

Ich glaube nicht, dass Microsoft Dokument das Format einschließlich nativen Code in einer Baugruppe, so unterstützt dies schwierig ist.

Dies ist eine sehr alte Frage, die mit sehr interessanten Antworten, die nach einigen Jahren.
Ab jetzt tritao/CppSharp ist die aktiv entwickelt Gabel mono/cxxi das war wieder zurück auf den mono repository in 2013 und wird aktiv entwickelt, da Die aktuelle Struktur finden Sie unter mono/CppSharp

Ihre readme-Datei hier und die Funktionen für den "generator" sind:

  • Mehrere backends:C++/CLI und C# P/Invoke
  • Mehrere ABIs:Itanium -, MS -, ARM -, iOS-und iOS64
  • Mehrere Plattformen:Windows, OS X und Linux
  • Virtuelle Tabelle überschreiben Unterstützung
  • Mehrfachvererbung unterstützen
  • Leicht erweiterbar, Semantik über Benutzer übergibt
  • Work-in-progress-Unterstützung für STL-C++/CLI nur)
  • Stark typisierte Anpassung APIs und geben maps

Es kommt auch mit einer Menge Cooler AST Zeug und einen parser.

Am 2.4 Mono können Sie C ++ / CLI-Anwendungen ausführen, die unter Beispiel kompiliert wurden Visual Studio 2008 mit / clr:. Safe-Schalter

Nein, C ++ / CLI ist nicht unter Mono unterstützt und wahrscheinlich wird es nie sein, obwohl Erzeugung rein IL MS Compilern erlauben würde völlig verwalteten Code unter Mono laufen zu lassen.

Als Interop-Sprache, C ++ / CLI existiert es möglich zu machen, nicht verwalteten Code aufzurufen. Die andere Alternative ist mit P / Invoke der gut dokumentiert wenn auch mit Problemen.

hier und sehen Sie unter "Missing Languages". Aber nur weil Sie kompilieren kippen bedeutet nicht, dass Sie kann nicht run . Sie können Ihren C ++ Code mit dem Framework SDK kompilieren und versuchen Sie es mit Mono ausgeführt wird. Ein Versuch wert, trotzdem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top