fix: macos, load multi dylib instances (#8731)

Multiple dylib instances will cause some global instances to be invalid.

eg. lazy_static objects in rust side, will be created more than once.

Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
fufesou 2024-07-17 11:49:11 +08:00 committed by GitHub
parent a4565bf0da
commit 901505e8be
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -117,9 +117,13 @@ class PlatformFFI {
? DynamicLibrary.open('librustdesk.so') ? DynamicLibrary.open('librustdesk.so')
: isWindows : isWindows
? DynamicLibrary.open('librustdesk.dll') ? DynamicLibrary.open('librustdesk.dll')
: isMacOS :
? DynamicLibrary.open("liblibrustdesk.dylib") // Use executable itself as the dynamic library for MacOS.
: DynamicLibrary.process(); // Multiple dylib instances will cause some global instances to be invalid.
// eg. `lazy_static` objects in rust side, will be created more than once, which is not expected.
//
// isMacOS? DynamicLibrary.open("liblibrustdesk.dylib") :
DynamicLibrary.process();
debugPrint('initializing FFI $_appType'); debugPrint('initializing FFI $_appType');
try { try {
_session_get_rgba = dylib.lookupFunction<F3Dart, F3>("session_get_rgba"); _session_get_rgba = dylib.lookupFunction<F3Dart, F3>("session_get_rgba");