gpt4 book ai didi

c# - 将 jabber-net 与 Unity3d 集成的内部编译器错误

转载 作者:太空狗 更新时间:2023-10-29 23:24:43 26 4
gpt4 key购买 nike

here 导入 jabber-net dll 后进入我的项目并运行

using UnityEngine;
using System.Collections;
using jabber;
using jabber.client;
using jabber.connection;

public class XMPP : MonoBehaviour {

jabber.client.JabberClient jC;

// Use this for initialization
void Start () {
jC = new JabberClient();
}
}

Unity 提示:

Internal compiler error. See the console log for more information. output was: Unhandled Exception: System.TypeLoadException: Could not load type 'jabber.connection.XmppStream' from assembly 'jabber-net, Version=2.1.0.710, Culture=neutral, PublicKeyToken=924c5b18328d6f09'.

我读到其他人(极少数)已经设法将 jabber-net 与他们的 Unity 代码集成在一起。任何人都可以阐明如何做到这一点或将我指向另一个图书馆吗?我非常希望能够在我的项目中使用 XMPP。

谢谢

编辑

感谢@Calvin 提供有用的回复并帮助我深入了解问题。

解决步骤:

  1. 在剥离 System.Drawing 和 System.Windows.Form 后在 monodevelop 中编译 dll(将构建目标更改为库而不是可执行文件)
  2. 导入 Plugins 文件夹(不是随机文件夹)中的 dll
  3. 将 Unity 构建目标更改为 Net 2.0(不是 Net 2.0 子集)并指示它剥离字节码
  4. 删除 SystemAssemblies 文件夹以强制重新编译

事后分析

而且……这种方法似乎最终会失败。编译到 ios 似乎打破了依赖链与 ExecutionEngineException: Attempting to JIT compile method '(wrapper managed-to-native) System.Threading.Interlocked:CompareExchange (jabber.protocol.ProtocolHandler&,jabber.protocol.ProtocolHandler,jabber.protocol. ProtocolHandler)' 同时使用 --aot-only 运行。

最佳答案

我刚刚能够在 MonoDevelop 中编译 2005-jabber-net 解决方案并将其添加到 Unity 3.5.6 项目中,而 Unity 没有生成编译器错误。

该解决方案引用了 System.Drawing 和 System.Windows.Forms,Unity 不支持它们。我删除了那些,将编译目标更改为“库”,并将 2005-jabber-net.dll、netlib.Dns.dll 和 zlib.net.dll 复制到 Unity 项目中。

您的示例代码在附加到 GameObject 时编译并运行,但我没有进一步测试。

编辑:刚刚意识到这个程序集可能需要 Unity Pro,因为 .Net 套接字访问在 Unity 的免费版本中受到限制。

双重编辑:我收回那句话,刚刚查看了他们的产品比较表,现在 .Net 套接字在 Unity 的免费版本中列为可用。

关于c# - 将 jabber-net 与 Unity3d 集成的内部编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168104/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com