在 Linux(单声道)上使用混合模式 (managed/unmanaged) dll

Use a mixed-mode (managed/unmanaged) dll on Linux (mono)

我需要使用 Mono 将 .NET 库移植到 Linux 到 运行。

库本身是用 C# 编写的,但它引用了另一个用托管和非托管 C++ 编写的混合模式 DLL,并将托管包装器公开给非托管 类。

我假设 dll 不会只在 Linux 上运行,因为它是用 VS 为 windows 编译的。

PS: 混合模式 dll 仅链接 libpng 和 zlib,它们都有 Linux 端口。

1) 有没有简单的方法解决这个问题?

2) WINE 能否以某种方式与 mono 结合使用以覆盖库中未处理的部分?如果是这样,会不会导致性能问题?

Mono 不支持混合模式程序集,所以如果 WINE 可以提供帮助,您可以试试。

可行的办法是使用CppSharp,https://github.com/mono/CppSharp