我正在移植一些我们在 Windows 上的 C# 代码,以便通过 Mono 在 Mac 上使用。在我们的代码中,我们 P\Invoke 进入一个非托管 C++ dll。不幸的是,我们的构建过程只能在 Mac 上给出一个框架文件,而不是一个 dylib 文件。
当我为 Mono 移植代码时,一切正常,但 P\Invoke 进入框架文件。我尝试将框架文件添加到 /Library/Frameworks 文件夹中,该文件夹应该位于默认搜索路径中,但我不断收到 DllNotFound 异常。根据Mono Interop Guide,Mono 添加 .so 作为在 Mac 上搜索的扩展名存在问题。所以我尝试添加一个配置文件并将目标作为 .framework 文件提供,但我仍然遇到了同样的异常。Mono 指南提到使用框架执行 P\Invoke 变得更加复杂,但没有提及确切的问题或如何解决它们。
有人知道如何在 Mono 上 P\Invoke 到框架中吗?