c# - 创建 Game 类实例时出现 NullReferenceException (OpenTKGameWindow.Initialize)

标签 c# macos mono xamarin monogame

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

enter image description here

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,当我运行示例时它们似乎工作正常:

enter image description here

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

最佳答案

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 构建操作设置为“内容”才能完全开始。

关于c# - 创建 Game 类实例时出现 NullReferenceException (OpenTKGameWindow.Initialize),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727035/

相关文章:

javascript - TypeScript foreach 返回

svn - 如何修复 SVN 409 冲突错误

c# - Mono:找不到类型或命名空间名称 'HashSet'

c# - C# 列表上的动态 SQL 查询(基于字符串)

c# - 使用序列化时出现转换错误

macos - 如何打包 Mac OS 应用程序进行安装?

asp.net - 在基于 Linux 的服务器上运行 ASP.Net

asp.net-mvc - Mono上的ASP.NET MVC Preview 5

C# - 我知道,我知道,关于 Dispose 的另一个问题(与设计更相关)!

eclipse - 有没有办法将 Google Chrome 添加为 Flash Builder Standalone for Mac 中的外部 Web 浏览器?