Dopo l'importazione dei DLL Jabber-net da here nel mio progetto e l'esecuzioneerrore del compilatore interno integrando jabber-net con Unity3d
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();
}
}
Unità si lamenta con:
errore del compilatore interno. Vedere il log della console per ulteriori informazioni. output era: Eccezione non gestita: System.TypeLoadException: impossibile caricare il tipo 'jabber.connection.XmppStream' dall'assembly 'jabber-net, versione = 2.1.0.710, Culture = neutral, PublicKeyToken = 924c5b18328d6f09'.
Ho letto che altri (alcuni molto pochi) sono riusciti a ottenere jabber-net integrato con il loro codice Unity. Qualcuno potrebbe far luce su come ciò potrebbe essere fatto o indirizzarmi verso una biblioteca alternativa? Mi piacerebbe molto poter utilizzare XMPP nel mio progetto.
Grazie
Modifica
Grazie @Calvin per fornire la risposta utile e aiutare me drill-down per il problema.
Procedura per la risoluzione:
- compilare le DLL in MonoDevelop escludendo System.Drawing e System.Windows.Form (Change build target per essere raccolta, invece di eseguibile)
- Importare le DLL nella plugin cartella (non una cartella casuale)
- Cambiare l'Unità costruire bersaglio di essere Net 2.0 (2.0 sottoinsieme non Net) e istruzioni al fine di spogliare bytecode
- Eliminare la cartella SystemAssemblies per forzare una ricompilazione
Postmortem
E ... questo approccio sembra fallire. Compilare a ios sembra interrompere la catena di dipendenze con ExecutionEngineException: Tentativo di metodo di compilazione JIT '(wrapper managed-to-native) System.Threading.Interlocked: CompareExchange (jabber.protocol.ProtocolHandler &, jabber.protocol.ProtocolHandler, jabber.protocol .ProtocolHandler) 'mentre è in esecuzione con --aot-only.
Per curiosità, stai usando le DLL Mono? Credo che Unity sia basato su Mono e non sul framework Microsoft .NET. – ravuya
Sì, sto usando le DLL Mono. – jeremyong
Il sito jabber-net non dice quali versioni di .Net supporta. Potrebbe essere necessario compilarlo dal sorgente in MonoDevelop e vedere se ci sono opzioni di compilazione su target .Net 2.0. – Calvin