混合模式程序集(C++/CLI项目)在.NET Core上工作吗
Will mixed mode assemblies (C++/CLI projects) work on .NET Core?
我有一个使用C++/CLI项目的代码库,该项目通过精简包装类向CLR公开C++类。例如
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上下文中的非托管代码始终是特定于平台的,并且是为特定的操作系统(Windows)和特定的CPU体系结构(x86/x64)编译的。C++/CLI中的非托管代码最终与使用C++编译器编译的实际C++代码非常相似。由于混合模式程序集可以包含本机代码,因此它们绑定到特定的操作系统和CPU体系结构。
编辑(2019年3月):这个答案早于.Net Core,在Core上下文中可能已经过时。
混合模式程序集是否能与.NET Core一起使用并不是由特定于平台的代码决定的。对混合模式程序集的支持正在进行中:
https://github.com/dotnet/coreclr/issues/18013
据我所知,这将需要重新编译C++/CLI项目以针对.NET Core。
当然,具有x86代码的Windows混合模式程序集只能在Windows等中作为x86工作。
相关文章:
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 如何在 64 位 vb.net Windows 应用程序中引用 32 位 dll
- C++包含来自 #include "DevEngine/Core.h" 的错误
- 是否可以在Linux上使用.Net Core 3.1创建C++/CLI代码的C#DLL
- C++ DLL(不是 CLI)是否可以调用 .NET Core 3.0 委托?
- C++/CLI targetting .NET Core 3.1
- 是否有可能构建面向Linux和Windows的.Net Core C++ / CLI应用程序?
- 在.NET Core 3.1中运行托管C++/CLI程序集时,映像格式错误
- 无法将 c# .Net Core 3.0 与 directx 9.0 依赖项链接
- 如何从.NET Core调用cygwin编译的C++
- 在.NET Core中是否有与DllImport等效的Linux?
- 将结构数组从 C#(.NET Core) 传递到 C++(unamnaged)
- Linux 上的 .NET Core - 元帅结构
- .NET CORE 2 DLL引用带有C 代码运行时错误
- Visual Studio 2017 .Net Core 2.0 Angular Publish Fails
- 从C++调用 (C#) .NET Core 方法
- 调用从.NET Core中的C++项目构建的.dll时出现BadImageFormatException
- 混合模式程序集(C++/CLI项目)在.NET Core上工作吗
- 如何在.net Core项目中添加c++库