在Mac上使用Mono中的DllImport进行DllNotFoundException

时间:2012-11-16 11:31:40

标签: c# mono dllimport dylib monomac

我正在尝试在我的Mono Mac项目中使用DLLImport以使用我自己的.dylib,但是我得到了DllNotFoundException。我猜它与我的.dylib有关,因为我可以使用现有的.dylib文件,比如libmojoshader.dylib。

这是我如何使用DLLImport

[DllImport("libtestDylib.dylib")]
static extern int libsum(int a, int b);

然后我调用libsum函数以查看它是否有效。

我发现使用 MONO_LOG_LEVEL =“debug”MONO_LOG_MASK =“dll”mono myGame.exe 命令通过终端运行应用程序是调试此类问题的好方法,但是我无法让我的应用程序.exe运行。我已经尝试使用build文件夹中的.exe和.app / contents / MonoBundle中的.exe,我也尝试在.app / contents / MacOs中运行文件,因为这在我发现的一些地方被引用研究

最后一个文件抛出“文件不包含有效的CIL图像。”以及另外两个“应用程序包中没有Info.plist文件或Info.plist中没有NSPrincipalClass文件”。

所以,我猜第一步是设法通过终端运行应用程序,以便获得正确的调试信息,以便找不到我的.dylib。

我制作的.dylib是一个在XNA4中制作的空BSD C lib。

修改

我现在似乎无法让现有的dylib工作。

1 个答案:

答案 0 :(得分:0)

我通过使用单个c#文件创建一个新的Mono Mac项目来找到问题,然后我通过终端编译并使用debug命令运行它。通过终端反馈找到程序搜索.dylib的位置,并且我使用错误的体系结构构建了lib,这可以通过构建32位系统来解决。