混合模式程序集(C++/CLI 项目)能否在 .NET Core 上运行?
Will mixed mode assemblies (C++/CLI projects) work on .NET Core?
我有一个使用 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++/CLI 上下文中的非托管代码始终是特定于平台的,并且针对特定的 OS (Windows) 和特定的 CPU 体系结构 (x86/x64) 进行编译. C++/CLI 中的非托管代码最终很像使用 C++ 编译器编译的实际 C++ 代码。由于混合模式程序集可以包含本机代码,因此它们绑定到特定的 OS 和 CPU 体系结构。
编辑(2019 年 3 月):此答案早于 .Net Core,并且在 Core 上下文中可能已过时。
混合模式程序集是否与 .NET Core 一起工作不是由特定于平台的代码决定的。正在研究对混合模式程序集的支持:
https://github.com/dotnet/coreclr/issues/18013
据我了解,这将需要重新编译 C++/CLI 项目以面向 .NET Core。
当然,针对 Windows 的 x86 代码的混合模式程序集只能在 Windows 中作为 x86 运行,依此类推。
我有一个使用 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++/CLI 上下文中的非托管代码始终是特定于平台的,并且针对特定的 OS (Windows) 和特定的 CPU 体系结构 (x86/x64) 进行编译. C++/CLI 中的非托管代码最终很像使用 C++ 编译器编译的实际 C++ 代码。由于混合模式程序集可以包含本机代码,因此它们绑定到特定的 OS 和 CPU 体系结构。
编辑(2019 年 3 月):此答案早于 .Net Core,并且在 Core 上下文中可能已过时。
混合模式程序集是否与 .NET Core 一起工作不是由特定于平台的代码决定的。正在研究对混合模式程序集的支持:
https://github.com/dotnet/coreclr/issues/18013
据我了解,这将需要重新编译 C++/CLI 项目以面向 .NET Core。
当然,针对 Windows 的 x86 代码的混合模式程序集只能在 Windows 中作为 x86 运行,依此类推。