UnityStandaloneFileBrowser icon indicating copy to clipboard operation
UnityStandaloneFileBrowser copied to clipboard

DLL not found issue in Mac build

Open aadhilkhan opened this issue 3 years ago • 25 comments

Getting this error in my MacOS mono build;

DllNotFoundException: StandaloneFileBrowser SFB.StandaloneFileBrowserMac.OpenFilePanel (System.String title, System.String directory, SFB.ExtensionFilter[] extensions, System.Boolean multiselect) (at Assets/StandaloneFileBrowser/StandaloneFileBrowserMac.cs:44) SFB.StandaloneFileBrowser.OpenFilePanel (System.String title, System.String directory, SFB.ExtensionFilter[] extensions, System.Boolean multiselect) (at Assets/StandaloneFileBrowser/StandaloneFileBrowser.cs:51) SFB.StandaloneFileBrowser.OpenFilePanel (System.String title, System.String directory, System.String extension, System.Boolean multiselect) (at Assets/StandaloneFileBrowser/StandaloneFileBrowser.cs:39) CanvasSampleOpenFileImage.OnClick () (at Assets/StandaloneFileBrowser/Sample/CanvasSampleOpenFileImage.cs:41) UnityEngine.Events.InvokableCall.Invoke () (at /Users/bokken/buildslave/unity/build/Runtime/Export/UnityEvent/UnityEvent.cs:166) UnityEngine.Events.UnityEvent.Invoke () (at /Users/bokken/buildslave/unity/build/Runtime/Export/UnityEvent/UnityEvent/UnityEvent_0.cs:58) UnityEngine.UI.Button.Press () (at Library/PackageCache/[email protected]/Runtime/UI/Core/Button.cs:68) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/[email protected]/Runtime/UI/Core/Button.cs:110) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/[email protected]/Runtime/EventSystem/ExecuteEvents.cs:50) UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at Library/PackageCache/[email protected]/Runtime/EventSystem/ExecuteEvents.cs:261) UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/[email protected]/Runtime/EventSystem/EventSystem.cs:377)

How can I fix this? Thanks!

aadhilkhan avatar Jul 22 '21 05:07 aadhilkhan

In my case, Build Settings>PC, Mac & Linux Standalone > Architecture > "Intel 64-bit" works fine in my M1 mac and my old i-mac using Unity 2020.3.9f1.

Unfortunately I get same error messages setting "Apple silicon" or "Intel 64-bit + Apple silicon". Even though I rebuilt StandaloneFileBrowser.bundle on Xcode of M1 mac, I cannot fix this issue now.

YoshitakaAtarashi avatar Jul 24 '21 07:07 YoshitakaAtarashi

Same error here, only intel 64-bit works

krys64 avatar Jul 29 '21 08:07 krys64

The same here with Mac M1 =(

hippogamesunity avatar Aug 16 '21 12:08 hippogamesunity

@gkngkc hi! btw do you still support this project or it's abandoned?

hippogamesunity avatar Aug 16 '21 12:08 hippogamesunity

Same issue here, a pure intel64 build works but if it's built for silicon and intel64 the runtime will not find the dll.

acgourley avatar Sep 07 '21 16:09 acgourley

I solved this by building a universal bundle. To do this, I opened the StandaloneFileBrowser.xcodeproj/project.pbxproj and modified ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; to ARCHS = "$(ARCHS_STANDARD)";

and I removed VALID_ARCHS = x86_64; which when set made the .bundle created not include the arm64 slice.

Finally I confirmed with lipo -info StandaloneFileBrowser output x86_64 arm64 and replaced it into the unity project.

acgourley avatar Sep 07 '21 17:09 acgourley

I solved this by building a universal bundle. To do this, I opened the StandaloneFileBrowser.xcproject and modified

@acgourley

Where is this StandaloneFileBrowser.xcproject file? I'm not finding this file name in this repo.

EDIT: I take it that all we need is an updated version of the .bundle? Is there any way you could share the .bundle that you built?

davidmfinol avatar Oct 29 '21 05:10 davidmfinol

Ah typo in that filename, it's this one: https://github.com/gkngkc/UnityStandaloneFileBrowser/blob/master/Plugins/MacOS/StandaloneFileBrowser/StandaloneFileBrowser.xcodeproj/project.pbxproj

acgourley avatar Oct 29 '21 15:10 acgourley

Thank you, I got it working!

davidmfinol avatar Nov 04 '21 02:11 davidmfinol

@davidmfinol Hello! Can you share your updated bundle please?

hippogamesunity avatar Nov 08 '21 12:11 hippogamesunity

@davidmfinol Hello! Can you share your updated bundle please?

Sure, you can find the bundle I created here: https://github.com/finol-digital/Card-Game-Simulator/tree/develop/Assets%2FStandaloneFileBrowser%2FPlugins%2FStandaloneFileBrowser.bundle

davidmfinol avatar Nov 08 '21 22:11 davidmfinol

@davidmfinol Many thanks! I was able to make it work. One thing you should note that we need to select StandaloneFileBrowser.bundle and choose 'Any CPU' option (it looks like it's set to 'Intel 64-bit' in your project).

hippogamesunity avatar Nov 09 '21 11:11 hippogamesunity

@davidmfinol btw did you manage to also fix this issue? https://github.com/gkngkc/UnityStandaloneFileBrowser/issues/101

hippogamesunity avatar Nov 09 '21 11:11 hippogamesunity

@hippogamesunity Thanks for pointing out the cpu option! As for the other issue, I don't know if I "fixed" it, but at least I don't seem to be having that issue with my project.

davidmfinol avatar Nov 10 '21 00:11 davidmfinol

For posterity's sake, here's the current link to @davidmfinol 's repo that has the functioning bundle file. I just replaced the current .bundle file with this one and it works great on my M1 MacBook Air.

https://github.com/finol-digital/Card-Game-Simulator/tree/19305ce9cabf952ef1701144e2999eb0e53bfbe0/Assets/StandaloneFileBrowser/Plugins/StandaloneFileBrowser.bundle

Thanks!

JudahMantell avatar May 31 '22 18:05 JudahMantell

@SceneForgeStudio Hi! I can confirm this works on M1 if built x64/silicon, but doesn't work on an old Mac with Core i5.

hippogamesunity avatar Jun 11 '22 17:06 hippogamesunity

@SceneForgeStudio Hi! I can confirm this works on M1 if built x64/silicon, but doesn't work on an old Mac with Core i5.

Interesting, so if I build just for regular x64/Intel then it won't work, only if it's a universal build? I haven't tested an Intel-Only build, as I only need to publish for M1 (and universal during my app's beta period).

JudahMantell avatar Jun 11 '22 17:06 JudahMantell

Tested x64 architecture only + Core i5, it doesn't work (missed DLL).

hippogamesunity avatar Jun 11 '22 18:06 hippogamesunity

In that case you'll have to use the older non-M1 dll. You can probably use both and just change which CPU each one is for in the inspector.

JudahMantell avatar Jun 11 '22 18:06 JudahMantell

I'm not sure if we can include both original and fixed bundles.

hippogamesunity avatar Jun 11 '22 18:06 hippogamesunity

We need a true mac dev as there is source code available) I'm not, unfortunately.

hippogamesunity avatar Jun 11 '22 18:06 hippogamesunity

I solved this by building a universal bundle. To do this, I opened the StandaloneFileBrowser.xcodeproj/project.pbxproj and modified ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; to ARCHS = "$(ARCHS_STANDARD)";

and I removed VALID_ARCHS = x86_64; which when set made the .bundle created not include the arm64 slice.

Finally I confirmed with lipo -info StandaloneFileBrowser output x86_64 arm64 and replaced it into the unity project.

@acgourley thank you so much!! Now work in mac m2 pro!!

If anyone need it, these are the precise steps I followed:

  1. In the UnityStandaloneFileBrowser folder, go to Plugin -> MacOS -> StandaloneFileBrowser
  2. Show package contents of StandaloneFileBrowser.xcodeproj
  3. Open the project.pbxproj file with Xcode
  4. Change the line ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; to ARCHS = "$(ARCHS_STANDARD)";
  5. Remove the line VALID_ARCHS = x86_64;
  6. Save the file and close Xcode
  7. Go back to the Plugin -> MacOS -> StandaloneFileBrowser folder
  8. Open StandaloneFileBrowser.xcodeproj with Xcode
  9. Perform the build. A StandaloneFileBrowser.bundle file will be created
  10. Go to the folder where the file was just created (you can find it in Xcode by going to Product -> show build folder in finder)
  11. Copy the StandaloneFileBrowser.bundle file
  12. Replace the existing file in the /StandaloneFileBrowser/Plugins/folder

If you had already uploaded the asset to unity, make sure you re-import it after replacing the bundle file, before continuing with the project

miche9 avatar Mar 21 '23 16:03 miche9

This project is abandoned. The asset has a few critical bugs on Mac, like app crashes when you press Cancel in File Picker. I've purchased another asset and it works fine https://assetstore.unity.com/packages/tools/utilities/file-browser-pro-98713

hippogamesunity avatar Mar 21 '23 17:03 hippogamesunity

I solved this by building a universal bundle. To do this, I opened the StandaloneFileBrowser.xcodeproj/project.pbxproj and modified ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; to ARCHS = "$(ARCHS_STANDARD)"; and I removed VALID_ARCHS = x86_64; which when set made the .bundle created not include the arm64 slice. Finally I confirmed with lipo -info StandaloneFileBrowser output x86_64 arm64 and replaced it into the unity project.

@acgourley thank you so much!! Now work in mac m2 pro!!

If anyone need it, these are the precise steps I followed:

  1. In the UnityStandaloneFileBrowser folder, go to Plugin -> MacOS -> StandaloneFileBrowser
  2. Show package contents of StandaloneFileBrowser.xcodeproj
  3. Open the project.pbxproj file with Xcode
  4. Change the line ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; to ARCHS = "$(ARCHS_STANDARD)";
  5. Remove the line VALID_ARCHS = x86_64;
  6. Save the file and close Xcode
  7. Go back to the Plugin -> MacOS -> StandaloneFileBrowser folder
  8. Open StandaloneFileBrowser.xcodeproj with Xcode
  9. Perform the build. A StandaloneFileBrowser.bundle file will be created
  10. Go to the folder where the file was just created (you can find it in Xcode by going to Product -> show build folder in finder)
  11. Copy the StandaloneFileBrowser.bundle file
  12. Replace the existing file in the /StandaloneFileBrowser/Plugins/folder

If you had already uploaded the asset to unity, make sure you re-import it after replacing the bundle file, before continuing with the project

Would you be able to upload/send your latest bundle file for us to use? It would be super helpful. Thanks!

JudahMantell avatar Mar 27 '23 12:03 JudahMantell

I solved this by building a universal bundle. To do this, I opened the StandaloneFileBrowser.xcodeproj/project.pbxproj and modified ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; to ARCHS = "$(ARCHS_STANDARD)"; and I removed VALID_ARCHS = x86_64; which when set made the .bundle created not include the arm64 slice. Finally I confirmed with lipo -info StandaloneFileBrowser output x86_64 arm64 and replaced it into the unity project.

@acgourley thank you so much!! Now work in mac m2 pro!! If anyone need it, these are the precise steps I followed:

  1. In the UnityStandaloneFileBrowser folder, go to Plugin -> MacOS -> StandaloneFileBrowser
  2. Show package contents of StandaloneFileBrowser.xcodeproj
  3. Open the project.pbxproj file with Xcode
  4. Change the line ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; to ARCHS = "$(ARCHS_STANDARD)";
  5. Remove the line VALID_ARCHS = x86_64;
  6. Save the file and close Xcode
  7. Go back to the Plugin -> MacOS -> StandaloneFileBrowser folder
  8. Open StandaloneFileBrowser.xcodeproj with Xcode
  9. Perform the build. A StandaloneFileBrowser.bundle file will be created
  10. Go to the folder where the file was just created (you can find it in Xcode by going to Product -> show build folder in finder)
  11. Copy the StandaloneFileBrowser.bundle file
  12. Replace the existing file in the /StandaloneFileBrowser/Plugins/folder

If you had already uploaded the asset to unity, make sure you re-import it after replacing the bundle file, before continuing with the project

Would you be able to upload/send your latest bundle file for us to use? It would be super helpful. Thanks!

Sure! Here is the plugin with the added compatibility:

UnityStandaloneFileBrowser_arm64.zip

Unfortunately, some bugs still persist as mentioned by @hippogamesunity, but in any case, with this upgrade the system file browser is correctly loaded in macos. Therefore, in my opinion, this free plugin remains a valid alternative to other paid plugins.

miche9 avatar Mar 27 '23 13:03 miche9