Unity3D DllNotFoundException/System.DllNotFoundException


原地址:http://hi.baidu.com/next2_me/item/3a70c1cc6b2fc6320931c622

Unity3D DllNotFoundException/System.DllNotFoundException

Unity System.DllNotFoundException

Unity Fallback handler could not load library D:/91yGame/SparrowCD_Data/Mono/.\D:/91yGame/SparrowCD_Data/Plugins/GAME3D.dll

Unity3D Fallback handler could not load library D:/91yGame/SparrowCD_Data/Mono/.\D:/91yGame/SparrowCD_Data/Plugins/GAME3D.dll

 

Unity System.DllNotFoundException: D:/91yGame/SparrowCD_Data/Plugins/GAME3D.dll

Unity3D System.DllNotFoundException: D:/91yGame/SparrowCD_Data/Plugins/GAME3D.dll

Unity DllNotFoundException: D:/91yGame/SparrowCD_Data/Plugins/GAME3D.dll

Unity3D DllNotFoundException: D:/91yGame/SparrowCD_Data/Plugins/GAME3D.dll

筆者在開發完游戲后,在絕大部分的客戶機都是正常運行的,但是某些玩家就是不能啟動游戲。重新下載也一樣。這很可能和系統環境有些關系了,引用dll都是放在plugins的。

通過日志發現 很多日志都是上面的內容,Fallback handler could not load library,游戲大廳c++通訊dll調用失敗了。

通過分析,可以明確:

1:GAME3D.dll在大部分機器可以調用,說明DLL函數正確導出。 

2:C#導入方法

    [DllImport(@"GAME3D", EntryPoint = "SetCallbackTemp", CharSet = CharSet.Ansi)]
    public extern static void CallGameSceneNew(DegOnGameSceneNew callBack);

    在大部分機器也是ok的,函數調用也是對的。

3:GAME3D.dll依賴其他dll,而在unity規定的Plugins中找不到依賴dll。或者說某些客戶端不能正常引用。

通過Depends查看,我們發現這個通訊dll依賴MFC90.dll MSVCR90.dll,MSVCP90.dll了。

在出現異常的機器上把這些dll復制到unity發現目錄下的Plugins下。再次啟動游戲,一切正常了,虛擬機上也正常了。

這個問題在虛擬機上很容易出現,對於引用dll的項目,多多細心。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM