2

我刚刚在 OSX 上安装了 xamarin 和 monogame 我试图运行一个在 Windows 上完美运行的非常基本的演示项目。但我收到以下错误:

在此处输入图像描述

System.NullReferenceException: Object reference not set to an instance of an object
  at Microsoft.Xna.Framework.OpenTKGameWindow.Initialize () [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.OpenTKGameWindow..ctor () [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.OpenTKGamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game) [0x00000] in <filename unknown>:0
  at Microsoft.Xna.Framework.Game..ctor () [0x00000] in <filename unknown>:0
  at test.Game1..ctor () [0x00057] in /Users/remojansen/Desktop/test/test/Game1.cs:37
  at test.Program.Main () [0x00001] in /Users/remojansen/Desktop/test/test/Program.cs:19

代码没有任何问题,所以我一定是缺少一个 DLL 什么的?您对可能缺少的内容有任何想法吗?

谢谢 :)

[编辑]

反汇编在第二行显示错误:

00000155   callvirt IWindowInfo OpenTK.NativeWindow:get_WindowInfo ()
0000015a   ldnull 
0000015b   callvirt Object System.Reflection.PropertyInfo:GetValue (Object, Object[])
00000160   unbox.any System.IntPtr
00000165   stfld 
0000016a   call GraphicsMode OpenTK.Graphics.GraphicsMode:get_Default ()
0000016f   ldarg.0 
00000170   ldfld 
00000175   callvirt IWindowInfo OpenTK.NativeWindow:get_WindowInfo ()
0000017a   newobj Void OpenTK.Graphics.GraphicsContext:.ctor (GraphicsMode, IWindowInfo)

我还手动编译了 OpenTK,当我运行示例时,它们似乎工作正常:

在此处输入图像描述

我想问题出在monogame中,我使用xamarin monogame项目模板安装了monogame。

4

2 回答 2

1

Xamarin 选择了错误的 Monogame.Framework.dll。它正在尝试加载 WindowsGL 或 Linux 项目(它使用 OpenTKGamePlatform - 对于 MacOS,您希望 MacGamePlatform 在该堆栈跟踪中)。

MonoGame Xamarin 模板有很多问题。其中之一是它总是会选择错误的框架。您需要手动浏览到 /Users//Library/Application Support/XamarinStudio-4.0/LocalInstall/Addins/MonoDevelop.MonoGame.3.0.1/assemblies/MacOS 中的框架 dll

但是,如果您使用的是 3.0.1 版本,这仍然存在问题——存在 MonoMac.dll API 冲突。我强烈建议下载最新的 MonoGame 源代码,并自己构建 MonoGame.Framework.MacOS 项目,并在那里引用框架程序集。您仍然可以使用您安装的 Xamarin 模板,只需更改程序集引用。您可能还需要将您的 logo.png 构建操作设置为“内容”以完全开始。

于 2013-09-14T04:30:34.603 回答
0

对于将来可能偶然发现此问题的任何人,我在 Windows 上遇到了同样的问题。Xamarin 似乎选择了错误的 MonoGame.Framework.dll,即使我自己构建了 github 版本并手动设置了引用。

我很幸运,右键单击项目参考文件夹中的 MonoGame.Framework 参考,并取消选中“本地复制”复选框;这为我解决了问题!

我取消选中此复选标记

祝你好运!

于 2014-11-27T07:43:02.160 回答