Overview
Examples
Screenshots
Comparisons
Applications
Download
Documentation
Tutorials
Bazaar
Status & Roadmap
FAQ
Authors & License
Forums
Funding Ultimate++
Search on this site
Search in forums












SourceForge.net Logo
Home » Developing U++ » Mac OS » missing libmysqlclient.dylib [SOLVED]
Re: missing libmysqlclient.dylib [message #53098 is a reply to message #53001] Wed, 26 February 2020 16:53 Go to previous messageGo to previous message
forlano is currently offline  forlano
Messages: 1185
Registered: March 2006
Location: Italy
Senior Contributor
Solved!

It seems that the app try to get the library from where was at compile time. So the user needs to install the library and be lucky to put it in the right place.
The best option is to put the dylib with your app, but on mac this is a bit tricky.

Here is a list of dylib used by my program:

otool -L ./VegaVR.app/Contents/MacOS/VegaVR 
./VegaVR.app/Contents/MacOS/VegaVR:
	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1673.126.0)
	/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 23.0.0)
	/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 162.0.0)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
	/usr/local/opt/mysql/lib/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0) <--- LOOK THIS
	/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
	/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1894.10.126)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1673.126.0)
	/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1348.12.4)
	/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)


I need to deploy libmysqlclient.21.dylib. I copied it in the same folder of the executable app. Then you need to run a black magic tool that perform some operation on your executable and address it to the correct path (my exe is named VegaVR)

install_name_tool -change /usr/local/opt/mysql/lib/libmysqlclient.21.dylib  "@executable_path/libmysqlclient.21.dylib" ./VegaVR.app/Contents/MacOS/VegaVR


Here is the dylib list after this task:

otool -L ./VegaVR.app/Contents/MacOS/VegaVR 
./VegaVR.app/Contents/MacOS/VegaVR:
	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1673.126.0)
	/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 23.0.0)
	/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 162.0.0)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)
	@executable_path/libmysqlclient.21.dylib (compatibility version 21.0.0, current version 21.0.0)  <-- LOOK HERE
	/usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.5)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
	/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1894.10.126)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1673.126.0)
	/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1348.12.4)
	/System/Library/Frameworks/CoreText.framework/Versions/A/CoreText (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)


As you see, the wanted dylib is now searched in the executable path. This procedure has been tested with another computer.
Luigi

[Updated on: Wed, 26 February 2020 16:53]

Report message to a moderator

 
Read Message
Read Message
Read Message
Previous Topic: Input field in dark mode looking ugly
Next Topic: Log file
Goto Forum:
  


Current Time: Thu Apr 25 10:43:41 CEST 2024

Total time taken to generate the page: 0.06291 seconds