3

我试图在我的 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 中的一个,我还尝试在 .app/contents/MacOs 中运行文件,因为在我发现的某些地方引用了这个文件研究。

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

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

我制作的 .dylib 是用 XNA4 制作的空 BSD C 库。

编辑

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

4

1 回答 1

0

我通过使用单个 c# 文件创建一个新的 Mono Mac 项目来发现问题,然后我通过终端编译该文件并使用调试命令运行它。通过终端反馈发现程序在哪里搜索 .dylib,并且我制作的 lib 是用错误的架构构建的,而这只是通过构建 32 位系统来解决。

于 2012-11-19T12:46:45.383 回答