我有一个使用C/C++LI项目的代码库,它通过瘦包装类将C类暴露给CLR.例如…
C项目中的C代码
class Foo { public Foo(bool wat) { /* do the things */ } };
混合模式程序集中的C/C++LI代码(C/C++LI项目)
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/C++LI上下文中的非托管代码始终是特定于平台的,并针对特定操作系统(Windows)和特定cpu体系结构(x86 / x64)进行编译. C/C++LI中的非托管代码最终与使用C编译器编译的实际C代码非常相似.由于混合模式程序集可以包含本机代码,因此它们绑定到特定的OS和cpu体系结构.