1

我刚开始使用 MonoGame 在 Xamarin Studio 中制作游戏。但是,我也使用 Mono.Cairo 来渲染图形。

在我的电脑上一切正常,代码编译并运行,没有问题。当我把游戏给我朋友的时候,它不起作用,说Mono.Cairo.dll 不见了。

所以我尝试在游戏中包含 Mono.Cairo.dll。显然,在 Xamarin Studio 中没有办法做到这一点,除了在你的 Mono 文件夹中找到文件并将其复制到输出 bin 文件夹中,每次你想分发它,但这没关系,没什么大不了的。

然后我的朋友看到​​ libcairo-2.dll 不见了。可以理解,因为他的计算机上没有安装 GTK+,而 Mono.Cairo.dll 只是包装器。但是,在从 GTK+ 网站下载 libcairo-2.dll 并将其包含在游戏中后,他收到了相同的错误消息,说 libcairo-2.dll 丢失,即使它就在 Mono.Cairo 旁边的文件夹中。 dll和游戏可执行文件。

我是否遗漏了一些非常明显的东西,或者除了需要下载和安装 GTK+ 之外,现在没有办法分发这个游戏了吗?另外,真的没有办法将 Xamarin Studio 设置为在输出文件夹中自动包含这些所需的 DLL 吗?

错误信息:

未处理的异常:System.DllNotFoundException:无法加载 DLL 'libcairo-2 .dll':找不到指定的模块。(HRESULT 例外:0x80070 07E)在 Cairo.NativeMethods.cairo_image_surface_create(格式格式,Int32 宽度,Int32 高度)在 Cairo.ImageSurface..ctor(格式格式,Int32 宽度,Int32 高度)在 VGame.Renderer.Resize(Int32 宽度, Int32 高度)在 Arena.Program.Main() 的 VGame.VectorGameSession..ctor()

4

1 回答 1

0

实际上有一种方法可以告诉 Xamarin 在输出文件夹中包含 DLL。

在您的解决方案中,选择您的项目,然后打开/展开References文件夹。

要在二进制输出文件夹中包含 .dll 文件的本地副本,请在引用文件夹中右键单击它并检查local copy

编辑:
如果您要手动包含 .dll 文件,请右键单击引用文件夹,单击Edit References,选择.Net-Assembly并导航到您的 .dll 文件。

于 2014-04-04T17:37:19.410 回答