2017-03-06 60 views
0

我想用我的DLL通過在運行時代碼在運行時使用的DLL(不把在插件資產DLL) 所以我寫下面這段代碼:在Unity

集DLL = Assembly.LoadFrom(「d :\ HaoranZhu \工作空間\ UnityProjects \ ViveDRMSDKTest \資產\插件\ x86_64的\ vita_api.dll「);

但在這裏顯示了錯誤的統一控制檯:

BadImageFormatException:未能加載文件或程序集 'd:\ HaoranZhu \工作區\ UnityProjects \ ViveDRMSDKTest \資產\插件\ x86_64的\ vita_api.dll' 或一個的依賴關係。試圖加載格式不正確的程序。 System.Reflection.Assembly.LoadFrom(System.String assemblyFile)(at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Reflection/Assembly.cs:520) loadExternalDll.Start()()(在Assets/TestScripts/loadExternalDll.cs中:16)

這裏有什麼問題?

+0

你確定vita_api.dll沒有任何其他程序集的依賴嗎?你有嘗試過使用32位嗎? – Maakep

回答

0

你是因爲(根據https://msdn.microsoft.com/en-us/library/1009fa28(v=vs.110).aspx)得到這個錯誤:

---- ---- BadImageFormatException
assemblyFile不是有效的組件;例如,一個64位進程中的32位程序集。有關更多信息,請參閱例外主題。
- 或 -
2.0或更高版本的公共語言運行庫是當前加載和assemblyFile是用最新版本的編譯。

---

這意味着要麼使用的是32位的組中,過程爲64位,一個(只得到一個64位版本)。

或者如果您爲公共語言運行庫的更高版本下載了庫。

+0

是的,我已經在微軟的網站上看到它。一個非常奇怪的問題是,當我將dll放在Assets/Plugins中並使用'using namespace'在C#腳本中時,它工作得很好。但是,如果我通過腳本「Assembly dll = Assembly.LoadFrom(XXX)」使用它,它只是有一個錯誤。我不知道爲什麼。 – RiTianRan

+0

以及他們基本上是你可以從這個錯誤的唯一途徑。該方法是否適用於任何其他DLL文件? –