Unity3D執行報DllNotFoundException

楊令雲發表於2017-02-04

Unity3D執行報DllNotFoundException

unity

起因

  • unity程式build到pc上,拿到其他人的機器上結果有些功能不正常,看log裡面大概是

Fallback handler could not load library: xxx.dll
DllNotFoundException: xxx.dll

it only seems to happen with C++ DLLs that have dependencies that aren`t already loaded.

  • 好吧,這個理由很理想,就是unity的專案依賴了A.dll,而A.dll又依賴了B.dll,而B.dll缺失,導致load A.dll時異常,我覺得這是unity打包的坑~
  • 那麼主要原因就是大部分機器上都帶有A.dll,而少部分機器上缺失B.dll

解決

  • 使用dll Dependency Walker這個軟體來查詢dll所依賴的其他dll,就可以很容易的查到缺失的是哪個dll,把它加上就好
  • 在我這個case中,使用了unity的easymovietexture外掛來播放視訊,而easymovietexture依賴ffmpeg,其中一個dll依賴opencl.dll,大部分機器上都有這個dll,而少部分機器上是沒有這個dll,取而代之的是opencl32.dll和opencl64.dll,可能是dll的依賴相容性之類的沒做好吧
  • 最終問題解決,欣慰


相關文章