2012-10-31 43 views
5

進口從here的閒聊網dll文件到我的項目並運行後內部編譯器錯誤集成嘰裏咕嚕網與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(); 
    } 
} 

統一抱怨有:

內部編譯器錯誤。請參閱控制檯日誌以獲取更多信息。輸出是: 未處理的異常:System.TypeLoadException:無法從程序集'jabber-net,Version = 2.1.0.710,Culture = neutral,PublicKeyToken = 924c5b18328d6f09'加載類型'jabber.connection.XmppStream'。

我讀過其他人(很少有人)已經成功地將jabber-net與他們的Unity代碼集成在一起。任何人都可以闡明如何做到這一點,或者讓我指向另一個圖書館嗎?我非常希望能夠在我的項目中使用XMPP。

感謝

編輯

感謝@Calvin提供您有用的響應,並幫助我深入到這個問題。

步驟來解決:

  1. 編譯在MonoDevelop中的DLL中剝離出來System.Drawing中和System.Windows.Form後(更改構建目標是庫而不是可執行文件)
  2. 導入的dll文件插件文件夾中(不是隨機文件夾)
  3. 變化的統一建目標是淨2.0(未淨2.0子集),並指示它剝去字節碼
  4. 刪除SystemAssemblies夾強制重新編譯

死後

...這方法似乎最終失敗。編譯爲ios似乎打破了ExecutionEngineException的依賴鏈:試圖JIT編譯方法'(包裝託管到本機)System.Threading.Interlocked:CompareExchange(jabber.protocol.ProtocolHandler &,jabber.protocol.ProtocolHandler,jabber.protocol .ProtocolHandler)',而且只能運行。

+2

出於好奇,你使用的是單聲道動態鏈接庫嗎?我相信Unity是基於Mono而不是Microsoft .NET框架的。 – ravuya

+0

是的,我正在使用單聲道DLL。 – jeremyong

+0

jabber-net網站沒有說明它支持哪個版本的.Net。您可能需要在MonoDevelop中從源代碼編譯它,然後查看是否有構建選項來定位.Net 2.0。 – Calvin

回答

4

我只是能夠編譯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項目中。

您的示例代碼編譯並運行時附加到一個遊戲對象,但我沒有進一步測試。

編輯:剛剛意識到這個程序集可能需要Unity Pro,因爲.Net套接字訪問在Unity的免費版本中受到限制。

雙編輯:我收回,只是檢查他們的產品比較圖表,現在。網絡套接字列在免費版本的Unity中。

+0

感謝您試用@Calvin。我試圖在我的結尾做同樣的事情: 1.刪除System.Drawing和System.Windows.Forms引用 2.將目標更改爲庫 3.將配置設置爲版本 4.將框架設置爲構建爲單聲道2.0 當我將dll複製到統一項目時,我現在得到: 內部編譯器錯誤。請參閱控制檯日誌以獲取更多信息。輸出爲: 未處理的異常:System.TypeLoadException:無法從程序集「xmpp」加載類型「System.Runtime.Versioning.TargetFrameworkAttribute」。 任何想法? – jeremyong

+0

另外,我應該提到我實際上使用Unity Pro許可證。 – jeremyong

+0

我想我找到了問題。 jabber dlls需要在你的Unity項目中的Plugins文件夾下(Assets/Plugins/jabber/*。dll。這改變了編譯順序,但我不知道爲什麼修復它。) – Calvin