Я собрал файл dylib, используя fpcupdeluxe бесплатно pascal, используя только одну функцию cdecl _test, доступную как на 1) MacOS, так и на 2) Debian (кросс-скомпилировано в x86_64 darwin)
Я попытался вызвать dylib с помощью 1) dlopen 2) Соединительный заголовок 3) Framework
dylib, скомпилированный на MacOS, работал со всеми 3 методами. Однако, когда я заменил этот dylib на тот, который я кросс-компилировал в debian, похоже, что работает только dlopen, другие 2 метода, использующие заголовочный мост и инфраструктуру, дали мне эту ошибку: dyld: ленивое связывание символов не удалось: Символ не найден: _test
Я сделал nm -gU для обоих dylib, и только относительный виртуальный адрес функции _test отличается, что я могу сделать, чтобы выяснить причину этого и устранить ее?
otool -L для
Не работает
XXXXX.dylib: /home/wire/fpcupdeluxe/projects/XXXXX.dylib (совместимость версия 0.0.0, текущая версия 0.0.0) / System / Library / Frameworks / AppKit.framework / Versions / C / AppKit (версия совместимости 45.0.0, текущая версия 1404.0.0) /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (версия совместимости 300.0.0, текущая версия 1252.0.0 ) /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (версия совместимости 150.0.0, текущая версия 1253.0.0) /usr/lib/libSystem.B.dylib ( версия совместимости 1.0.0, текущая версия 1225.1.1)
Рабочая
/ Users / wire / XXXXX.dylib: /Users/wire/XXXXX.dylib (версия совместимости 0.0.0, текущая версия 0.0.0) /usr/lib/libSystem.B.dylib (совместимость версия 1.0.0, текущая версия 1281.100.1)
Где XXXXX - это имя моей библиотеки, я также заметил, что путь отличается для рабочий и нерабочий. В нерабочем режиме мой dylib указывает на каталог на моем компьютере linux, который не должен присутствовать на компьютере ma c. Я также попытался выполнить кросс-компиляцию на windows, и путь был в C: \, и ошибка была, изображение не найдено, я должен изменить этот путь? Я новичок в программировании на MacOS