2015-04-09 13 views
6

C++ sınıflarını CLR'ye gönderen bir C++/CLI projesi kullanan bir kod tabanım var. Örneğin ... bir CKarma çekirdek modülleri (C++/CLI projeleri) .NET Core üzerinde çalışacak mı?

C++ kod ++ proje karışık modlu montaj

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

C++/CLI kodu (C++/CLI projesi)

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

zamanda Bildiğim kadarıyla, karma mod meclisleri sadece Windows .NET üzerinde çalışacaktır. Bileşenleri yeniden hesaba katmam gerekmediğini ve bana çapraz platform desteği verecek olan P/Invoke'u kullanmam gerektiğini umuyorum.

.NET Core'un karma mod derlemelerini destekleyip desteklemeyeceğini bilen var mı? Diğer fikirler açığız.

+3

Hayır, CoreCLR, modül başlatıcılarını desteklemiyor. Bu bir anlam ifade etmiyor, bir C++/CLI derleyici sadece Windows için kullanılabilir ve açık kaynak değildir. –

cevap

4

C++/CLI bağlamında yönetilmeyen kod her zaman özel bir platformdur ve belirli bir işletim sistemi (Windows) ve belirli bir CPU mimarisi (x86/x64) için derlenmiştir. C++/CLI'deki yönetilmeyen kod, bir C++ derleyicisi kullanılarak derlenen gerçek C++ koduna çok benziyor. Karma mod düzenekleri yerel kod içerebildiğinden, belirli bir işletim sistemi ve CPU mimarisine bağlanır.

+0

Pratikte, bunun çoğunlukla doğru olduğuna eminim (özellikle yerel kodunuz C (++) çalışma zamanı veya standart kitaplıktan yararlanıyorsa), ancak çapraz derleme nedir? Bu MSVC++ 'nin yapamayacağı bir şey mi? – stakx

İlgili konular