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

标签 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 是否支持混合模式程序集?欢迎提出其他想法。

最佳答案

C++/CLI 上下文中的非托管代码始终是特定于平台的,并且是为特定操作系统 (Windows) 和特定 CPU 架构 (x86/x64) 编译的。 C++/CLI 中的非托管代码最终很像使用 C++ 编译器编译的实际 C++ 代码。由于混合模式程序集可以包含 native 代码,因此它们绑定(bind)到特定的操作系统和 CPU 架构。

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

关于c++ - 混合模式程序集(C++/CLI 项目)能否在 .NET Core 上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29545093/

相关文章:

.net - 你如何在 vb.net 中解析 HTML

.net - 为什么全局 native 对象会导致 C++/CLI dll 出现问题?

c++ - 指针整数强制转换的定义

c++ - 危害指标的内存排序

c++ - 如何在 Qt 中使用 .NET Framework 中的系统命名空间?

c# - 什么决定了 TaskFactory 产生的作业的线程数?

c++ - 为什么在 std::visit 中使用 std::overload 而不是 concepts/constexpr?

c++ - 动态对象析构函数中的异常

c++-cli - 没有可以捕获托管变量的 lambda 的解决方法

.net - 如何在托管 C++/CLI 项目中修复 CA2123(覆盖链接需求应与基本相同)