Unity3D執行報DllNotFoundException
Unity3D執行報DllNotFoundException
起因
- unity程式build到pc上,拿到其他人的機器上結果有些功能不正常,看log裡面大概是
Fallback handler could not load library: xxx.dll
DllNotFoundException: xxx.dll
- 初看以為是缺失dll,但是實際上並不是這樣,首先在很多人機器上都是沒有問題的,只在極少數機器上才出現異常,另外報錯的dll都是有的,並不存在缺失的問題。
- 後來網上搜了一下,看到http://answers.unity3d.com/questions/993154/failed-to-load-dll-error.html 中提到了
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的依賴相容性之類的沒做好吧
- 最終問題解決,欣慰
相關文章
- 執行map()後,報:
- 執行用例報錯
- 執行gedit報No protocol specifiedProtocol
- ./mongod命令執行報錯Go
- linuxmysql執行報錯LinuxMySql
- 執行srvctl命令報錯
- Unity3D中指令碼的執行順序和編譯順序Unity3D指令碼編譯
- 執行web專案報錯Web
- 執行opatch lsinventory報錯73
- boost asio執行中報錯
- sh指令碼執行報錯指令碼
- job任務均不執行,手工執行報job now running
- Oracle執行JOB報ORA-27492:無法執行作業Oracle
- crontab異常:shell下可以執行命令,執行crontab卻報錯
- httprunner(11)執行測試報告HTTP測試報告
- idea上執行scala報錯Idea
- mysql執行報錯mysql.sockMySql
- MacOS 裡執行 sed 命令報錯Mac
- PHP編譯,執行make報錯PHP編譯
- Linux sybase執行isql報錯LinuxSQL
- selenium的那些事--執行報錯
- struts2_專案執行報404
- Jenkins中執行docker命令報錯JenkinsDocker
- 執行指令碼diagcollection.pl報錯指令碼GC
- mysql執行命令報segmentation fault 錯誤MySqlSegmentation
- [vue]執行vue --version報錯:-4054 ENOSYSVue
- Unity3D啟動報錯的解決方案Unity3D
- Xcode中使用unity3D生成專案(Easy Movie Texture)執行出現的問題XCodeUnity3D
- svelte 執行報錯 getaddrinfo ENOTFOUND localhostlocalhost
- Laravel 中執行 PHP artisan migrate 報錯LaravelPHP
- 在KYLIN中執行查詢報錯
- laradock 執行報錯 Service 'workspace' failed to build:AIUI
- sqlplus執行sql檔案報錯SQL
- 執行npm run dev 後報錯 Mix: not foundNPMdev
- AS執行main()方法報錯:SourceSet with name ‘main‘ not foundAI
- httprunner 執行報錯,有人遇到過麼?何解HTTP
- 執行Docker命令報錯解決辦法Docker
- 執行jdonframework的robot示例程式報錯Framework