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

时间:2015-04-09 17:26:19

标签: c++ .net c++-cli .net-core mixed-mode

我有一个使用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是否支持混合模式程序集?欢迎其他想法。

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:2)

.NET Core是否使用混合模式程序集取决于平台特定的代码。对混合模式程序集的支持正在:

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

据我了解,这将需要重新编译C ++ / CLI项目以.NET Core为目标。

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

相关问题