我正在尝试在我的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工作。
答案 0 :(得分:0)
我通过使用单个c#文件创建一个新的Mono Mac项目来找到问题,然后我通过终端编译并使用debug命令运行它。通过终端反馈找到程序搜索.dylib的位置,并且我使用错误的体系结构构建了lib,这可以通过构建32位系统来解决。