P /在Mono Mac上调用.framework文件

时间:2012-10-08 07:41:59

标签: macos mono mac-frameworks

我正在移植我们在Windows上使用的一些C#代码,以便通过Mono在Mac上使用。在我们的代码中,我们P \ Invoke到一个非托管的C ++ DLL。不幸的是,我们的构建过程只能在Mac上提供一个Framework文件而不是dylib文件。

当我为Mono移植我的代码时,一切正常,但P \ Invoke进入Framework文件。我尝试将框架文件添加到/ Library / Frameworks文件夹,该文件夹应该在默认搜索路径中,但我不断收到DllNotFound异常。根据{{​​3}},Mono添加.so作为在Mac上搜索的扩展名存在问题。所以我尝试添加一个配置文件并将目标作为.framework文件,但我仍然得到了同样的异常。 Mono指南提到使用Frameworks执行P \ Invoke变得更复杂,但没有提到确切的问题或如何绕过它们。

任何人都知道如何在Mono上调用一个框架?

1 个答案:

答案 0 :(得分:0)

您可以将框架放在生成的应用包中,看看我对这个问题的回答: Setting path of the Native Library for DllImport on Mono for Mac

还要确保在XCode的构建配置中相对于应用程序目录(即@executable_path/../Frameworks)设置框架的安装目录;见https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Tasks/CreatingFrameworks.html

这在捆绑多个框架时尤其重要 - 例如,如果您在A.framework中调用某个依赖于B.framework的方法。