Tesseract .net на macos, как ссылаться на libdl.dylib на macOS12?

Я запускаю приложение .net, для которого требуется ссылка на

      System.DllNotFoundException : Unable to load shared library 'libdl.so' or one of its dependencies. In order to help diagnose loading problems, consider setting the DYLD_PRINT_LIBRARIES environment variable: dlopen(liblibdl.so, 0x0001): tried: 'liblibdl.so' (no such file), '/usr/local/lib/liblibdl.so' (no such file), '/usr/lib/liblibdl.so' (no such file), '/Users/Amplicity/Documents/liblibdl.so' (no such file)

После легкого чтения я обнаружил, чтоlibdl.soявляется Linux-эквивалентом , который я затем попытался найти на своей машине.

      ➜  lib locate libdl.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/tvOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libdl.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/watchOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libdl.dylib
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libdl.dylib

Доступны только подписанные tvos, watchos и ios. Более легкое чтение показывает, что где-то около xcode 7 файлы были заменены текстовым файлом, который ссылается на dylibs в другом месте.

      ➜  lib locate libdl.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib/libdl.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/lib/libdl.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libdl.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/lib/libdl.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/lib/libdl.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libdl.tbd
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libdl.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX11.3.sdk/usr/lib/libdl.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/lib/libdl.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX12.1.sdk/usr/lib/libdl.tbd
/Library/Developer/CommandLineTools/SDKs/MacOSX12.3.sdk/usr/lib/libdl.tbd

Я попытался сделать символическую ссылку на.tbdк тому, что ожидает мое приложение .net, но .net жаловался, что это чистый файл mach-o.

Затем я попытался сделать символическую ссылку на tvos.dylibк.so, и получил другую ошибку о том, что его необходимо подписать для macos.

Как я могу найти/наколдоватьlibdl.dylibна macOS12, чтобы я мог напрямую ссылаться на него в своем приложении?

1 ответ

Я полагаю, вы не можете перестроить это приложение,cause currently libdl.so` не будет запрашиваться, поскольку он больше не развертывается как автономный.

Попробуйте сделать симлинкlibdl.soкlibc.so(или какая версия установлена ​​с пакетом вашей платформы .net,libc.so.x)

Другие вопросы по тегам