2015-04-09 3 views
6

Ich habe eine Codebasis, die ein C++/CLI-Projekt verwendet, das C++ - Klassen über dünne Wrapper-Klassen der CLR verfügbar macht. Zum Beispiel ...Funktionieren Assemblys im gemischten Modus (C++/CLI-Projekte) auf .NET Core?

C++ Code in einem C++ Projekt

class Foo { 
    public Foo(bool wat) { /* do the things */ } 
}; 

C++/CLI-Code in einer Mixed-Mode-Baugruppe (C++/CLI-Projekt)

public ref class ManagedFoo { 
    Foo * foo; 
public: 
    ManagedFoo (bool wat) { foo = new Foo(wat); } 
    !ManagedFoo() { delete foo; } 
    ~ManagedFoo() { this->!ManagedFoo(); } 
}; 

Wie Soweit ich weiß, werden Mixed-Mode-Assemblies nur unter Windows .NET ausgeführt. Ich hoffe, dass ich die Komponenten nicht neu Faktorisieren und P/Invoke verwenden muss, was mir plattformübergreifende Unterstützung geben würde.

Weiß jemand, ob .NET Core Assemblys im gemischten Modus unterstützt? Andere Ideen sind willkommen.

+3

Nein, CoreCLR unterstützt keine Modulinitialisierungen. Es macht auch keinen Sinn, ein C++/CLI-Compiler ist nur für Windows verfügbar und ist nicht Open Source. –

Antwort

4

Nicht verwalteter Code im Kontext von C++/CLI ist immer plattformspezifisch und wird für ein bestimmtes Betriebssystem (Windows) und eine bestimmte CPU-Architektur (x86/x64) kompiliert. Nicht verwalteter Code in C++/CLI entspricht weitgehend dem tatsächlichen C++ - Code, der mit einem C++ - Compiler kompiliert wurde. Da Assemblys im gemischten Modus nativen Code enthalten können, sind sie an eine bestimmte Betriebssystem- und CPU-Architektur gebunden.

+0

In der Praxis bin ich mir sicher, dass dies größtenteils korrekt ist (insbesondere, wenn Ihr systemeigener Code die C (++) Runtime oder Standardbibliothek verwendet), aber was ist mit Cross-Compilation? Ist das etwas, was MSVC++ auch nicht kann? – stakx

Verwandte Themen