混合模式程序集(C ++ / CLI项目)是否可以在.NET Core上运行?

问题描述 投票:7回答:2

我有一个使用C ++ / CLI项目的代码库,它通过瘦包装类将C ++类公开给CLR。例如...

C ++项目中的C ++代码

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

混合模式程序集中的C ++ / CLI代码(C ++ / CLI项目)

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

据我所知,混合模式程序集几乎只能在Windows .NET上运行。我希望我不需要重新考虑组件并使用P/Invoke,这将为我提供跨平台支持。

有谁知道.NET Core是否支持混合模式程序集?其他想法是受欢迎的。

c++ .net c++-cli .net-core mixed-mode
2个回答
5
投票

C ++ / CLI上下文中的非托管代码始终是特定于平台的,并针对特定操作系统(Windows)和特定CPU体系结构(x86 / x64)进行编译。 C ++ / CLI中的非托管代码最终与使用C ++编译器编译的实际C ++代码非常相似。由于混合模式程序集可以包含本机代码,因此它们绑定到特定的OS和CPU体系结构。

编辑(2019年3月):这个答案早于.Net Core,可能在Core上下文中已经过时了。


2
投票

混合模式程序集是否与.NET Core一起使用不是由特定于平台的代码决定的。正在研究支持混合模式组件:

https://github.com/dotnet/coreclr/issues/18013

据我所知,这需要重新编译C ++ / CLI项目以定位.NET Core。

当然,使用Windows的x86代码的混合模式程序集仅在Windows中用作x86,依此类推。

© www.soinside.com 2019 - 2024. All rights reserved.